如何从一组精灵中添加精灵图像,这些精灵对每个精灵都有不同的属性?

时间:2010-03-24 05:38:33

标签: cocoa-touch cocos2d-iphone

在我的应用程序中,有一个玩家和10个目标。每个目标一个接一个地出现(从target1到target10)。这是一场射击游戏。如果我们达到第一个目标,那么第二个目标就会到来。目标具有名称,speedOfGunDraw,击中玩家的概率,speedOfFire等属性。 我该怎么做才能让它们一个接一个地出现这些属性。我正在使用CCMenuItem作为目标。我正在为玩家使用精灵。请让我知道这样做。 谢谢。

1 个答案:

答案 0 :(得分:2)

解决您的问题:使用Cocos2D,您的场景将创建精灵。您可以获取当前运行的场景并向其发送消息(例如,“我正在拍摄”)。这可以通过导演来完成。

[[CCDirector sharedDirector] runningScene]; // returns a pointer to the running scene
[[[CCDirector sharedDirector] runningScene] someoneShotMe: self]; // will message the scene that you're shot.

或者,如果您的场景不控制事物,请在创建“敌人”时设置您希望作为代表通知的对象。

Enemy * enemy1 = [[Enemy alloc] init];
[enemy1 setDelegate: self];

// and then from your enemy object, you call a message on the delegate
[self->delegate someoneShotMe: self];

我认为你已经过度复杂了,因为你没有在那里使用MVC。

除了“视图”之外,你不应该为sprites创建子类以提供更多功能。

probabilityToHitPlayer之类的属性不会直接影响视图,因此不应存储在精灵中。

创建一个新类,如EnemyNSObject的子类),其中包含一个精灵,以及其他属性,如probabilityToHitPlayer

然后,当Sprite处理可见部分时,敌人可以处理逻辑(它是一个控制器)。

另外,使用菜单项是因为它们有触摸检测功能?不漂亮。相反,请查看CCTargetedTouchDelegate。