0

我有一个小问题。让我向您介绍一下:在 SpriteKit 上,我们有 MyScene.m 和 .h 文件。这个类有一个叫做“size”的属性。我们可以使用“self.size”从 MyScene.m 文件中访问它。我创建了一个名为 Menu 的类,所以我们有一个 .m 和一个 .h。该类是“SKNode”的子类。我的问题是我想在我的 Menu 类中获取 MyScene 类的“size”属性的值。因为我有一些节点要添加到 Menu 对象,它们的位置将取决于 MyScene 的“大小”属性。

你能告诉我怎么做吗?谢谢你

4

2 回答 2

0

您可以为您的 Menu 类使用一个initWithSceneSize:(CGSize)size方法,然后将大小存储在您的 Menu 类的 ivar 或属性中。

.m 中带有 ivar 的示例:

@implementation MenuClass
{
    CGSize sceneSize;
}

-(instancetype)initWithSceneSize:(CGSize)size
{
     sceneSize = size;
     if (self = [super init])
     {
         // do whatever
     }
     return self;
}

现在,您可以sceneSize在该类中的任何位置使用 ivar 来调整元素的大小和/或对齐方式。

另一个选项在另一个答案中详细说明,即使用 的场景属性SKNode

这是一个可行的选择,但请注意,如果节点当前不是节点树的子节点,则scene属性将为nil. 因此,您应该确保它当前已添加到场景的节点树中。

一个例子是,如果您尝试scene在构造函数中使用该属性,那么此时将无法访问它,您会感到困惑。

绝对是一个可行的选择,也是一个不错的选择,但请注意这一方面,否则这可能是您的下一个问题。

于 2014-10-25T16:46:13.227 回答
0

您可以使用scene属性SKNode来检索包含该节点的场景。有关更多信息,请参阅SKNode 类参考

于 2014-10-25T14:34:35.360 回答