可以按名称搜索SKSpriteNode对象

时间:2014-06-14 20:49:28

标签: objective-c sprite-kit skspritenode sknode

我正在使用Apple的SpriteKit创建游戏,我想知道在创建SKSpriteNode对象后找到它的最有效方法是什么。

在一个方法中,我初始化一个精灵节点并为其指定一个名称:

SKSpriteNode* playerBody = [SKSpriteNode spriteNodeWithImageNamed:@"playerBody.png"];
playerBody.name = @"player";

稍后在touchesBegan:withEvent:方法内部,我想再次找到先前定义的sprite节点并存储它,以便我可以在其上运行操​​作。首先我尝试这样做:

SKSpriteNode* body = [self childNodeWithName:@"player"];

但是,我已经意识到childNodeWithName:仅在SKNode课程中提供,而不是SKSpriteNode。所以这不起作用。我现在想的是我可以创建一个SKNode对象并将SKSpriteNode放在其中。这样我就可以使用上面的方法搜索SKNode。然而,这看起来有点复杂。还有更好的方法吗?

1 个答案:

答案 0 :(得分:3)

SKSpriteNode继承自SKNode。您可以使用childNodeWithName。

SKSpriteNode *someSprite = [SKSpriteNode node];

[someSprite childNodeWithName:@"someChildOfSprite"];

以下评论代码询问如何将SKNode转换为SKSpriteNode:

SKSpriteNode *theChildYouWant = (SKSpriteNode*)[someSprite childNodeWithName:@"someChildOfSprite"];