如何在另一个方法SpriteKit中访问已经初始化的节点

时间:2015-01-31 21:52:09

标签: ios initialization sprite-kit

在我的应用程序中,我将didMoveToView方法初始化为SKSpriteNode(Ball)。我有一个方法,可以选择刷卡(工作正常,我测试了它)。

当调用它时,它会调用一个名为[self jump];的方法 在这种方法中,我希望它使用SKSpriteNode Ball运行一些操作。

我曾经知道,但我忘记了允许您访问已经初始化的节点的代码。说我是否打算写[Ball runAction:myAction]; ,编译器将取代' Ball'与' _Ball'。

如何操纵SKSpriteNode' Ball'在另一种方法? 我不认为我需要添加任何代码,但如果有帮助我会遵守。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

正如评论中所建议的,您可以保留指向球节点的指针,但另一种方法可能是使用 SKNode 名称属性。

实例化球节点时,使用字符串标识符指定名称属性 -

SKSpriteNode *ball = // create instance here
ball.name = @"TheBall";// set its name
[self addChild:ball];// add to scene and forget about it

每当您需要从SKScene子类中使用 -

进行访问时
SKSpriteNode *sameBall = (SKSpriteNode*)[self childNodeWithName:@"TheBall"];// don't forget the typecast

现在,您可以在球节点上执行所需的任何操作。

有趣的读物是SKNode Class Reference by Apple搜索节点树的部分。

答案 1 :(得分:0)

您可以为球创建一个类属性,以便随处访问它。

 @property (nonatomic,strong) SKSpriteNode *ball

您可以使用self.ball在每种方法中访问球。

self.ball = //SKSpriteNode initialize
[self addChild:self.ball]
// Add Child

SKNodes也可以使用其子项的唯一名称进行搜索。

例如,您可以设置

// Initialise
ball.name = @"Ball"
// Add Child

然后可以使用函数childWithName:

搜索SKScene
SKSpriteNode *ball = [self childNodeWithName:@"Ball"]

在您的情况下,第一种方法更容易。