2014-03-04 28 views
0

所以,我有我的主要看法,我可以做的事情,因为这地址:一个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

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

感谢,

刘易斯

+1

需要更多的上下文。 A继承了哪些超类?它做什么,它的目的是什么?它是GameScene的孩子吗?它有没有办法访问GameScene(即通过self.parent或弱引用)? – LearnCocos2D

+0

@ LearnCocos2D A是一个包含植绒行为逻辑的类。它有一群“boids”在羊群中。我想在我的GameScene中绘制和更新这些。 – dev6754

回答

1

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

2

您可以创建在您的类中的方法返回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; 

希望这是你以后。

+0

谢谢,我在想这个。我将创建一个节点“列表”然后返回它们。 只是想知道是否有一个更优雅的做法! – dev6754

+0

替代方案是委托?但我想这个解决方案并不像上面那样简单 – Jing

相关问题