在我的应用程序中,我将didMoveToView
方法初始化为SKSpriteNode(Ball)。我有一个方法,可以选择刷卡(工作正常,我测试了它)。
当调用它时,它会调用一个名为[self jump];
的方法
在这种方法中,我希望它使用SKSpriteNode Ball
运行一些操作。
我曾经知道,但我忘记了允许您访问已经初始化的节点的代码。说我是否打算写[Ball runAction:myAction];
,编译器将取代' Ball'与' _Ball'。
如何操纵SKSpriteNode' Ball'在另一种方法? 我不认为我需要添加任何代码,但如果有帮助我会遵守。 提前谢谢。
答案 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:
SKSpriteNode *ball = [self childNodeWithName:@"Ball"]
在您的情况下,第一种方法更容易。