从另一个不是视图的类添加SKSpriteNode到主场景

时间:2014-03-04 18:01:36

标签: ios objective-c sprite-kit skspritenode

所以我有我的主要观点,我可以做这样的事情:

player = [Hero spriteNodeWithImageNamed:@"player.png"];
player.position = CGPointMake(512, 384);
[self addChild:player];

这是在GameScene完成的,这是我的主要场景,它在视图控制器中加载如下:

-(void) presentFirstScene
{   // create and present first scene
    GameScene* myScene = [GameScene sceneWithSize:self.view.bounds.size];
    [self.kkView presentScene:myScene];
}

现在如果我有一个名为A的其他类(可以在GameScene中找到此类的实例),如何在A中将SKSpriteNodes添加到主GameScene }。

最简单/最有效的方法是什么?

谢谢,

路易斯

2 个答案:

答案 0 :(得分:1)

您可以在A类中创建返回SKSpriteNodes的方法,例如:

// in .m
-(SKSpriteNode*)getHero {
    SKSpriteNode *hero = [SKSpriteNode spriteWithImageNamed:@"player.png"];
    // Add more customisation here
    return hero;
}

在你的GameScene中,你可以这样称呼它:

SKSpriteNode *hero = [a getHero];
hero.position = CGPointMake(512, 384);
[self addChild: hero];

请记住将类声明添加到.h文件中:

-(SKSpriteNode*)getHero;

希望这是你所追求的。

答案 1 :(得分:0)

如果A正在生成没有GameScene明确请求它们的节点,那么您可以使用委托模式。当有一个要添加的新节点时,在其委托上调用一个方法。