如何在另一个方法 SpriteKit 中访问已经初始化的节点
How to access already initialised node within another method SpriteKit
在我的一个应用程序中,我初始化了一个 SKSpriteNode (Ball) didMoveToView
方法。我有一种方法可以向上滑动(效果很好,我测试过)。
当它被调用时,它会调用一个名为 [self jump];
的方法
在这个方法中,我希望它使用 SKSpriteNode 运行 一些动作,Ball
.
我以前知道,但我忘记了允许您访问已初始化节点的代码。假设我要写 [Ball runAction:myAction];
, 编译器会将 'Ball' 替换为 '_Ball'.
如何在另一个方法中操作 SKSpriteNode 'Ball'?
我不认为我需要添加任何代码,但如果它有帮助我会遵守。
提前谢谢你。
正如评论中所建议的那样,您可以保留指向球节点的指针,但是另一种方法可能是使用 的 name 属性 SKNode.
当您实例化球节点时,为 name 属性 分配一个字符串标识符 -
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。
您可以创建一个 class 属性 让球随处访问。
@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"]
第一种方法对你来说更简单。
在我的一个应用程序中,我初始化了一个 SKSpriteNode (Ball) didMoveToView
方法。我有一种方法可以向上滑动(效果很好,我测试过)。
当它被调用时,它会调用一个名为 [self jump];
的方法
在这个方法中,我希望它使用 SKSpriteNode 运行 一些动作,Ball
.
我以前知道,但我忘记了允许您访问已初始化节点的代码。假设我要写 [Ball runAction:myAction];
, 编译器会将 'Ball' 替换为 '_Ball'.
如何在另一个方法中操作 SKSpriteNode 'Ball'? 我不认为我需要添加任何代码,但如果它有帮助我会遵守。 提前谢谢你。
正如评论中所建议的那样,您可以保留指向球节点的指针,但是另一种方法可能是使用 的 name 属性 SKNode.
当您实例化球节点时,为 name 属性 分配一个字符串标识符 -
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。
您可以创建一个 class 属性 让球随处访问。
@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"]
第一种方法对你来说更简单。