在过去的两天里,我一直在网上搜索,试图找到一个完整的例子,说明如何使用 Sparrow 中内置的游戏循环功能进行 ios 开发。我正在为一个学校项目开发塔防类型的游戏。玩家控制屏幕中央的炮塔,而坦克从所有 4 个侧面随机进入屏幕。这是屏幕截图的链接:
我有一个“TankManager”类,它通过将 Tank 的实例存储在一个名为“activeTanks”中来创建和处理我的“Tank”类的实例NSMutableArray
,并将我的“tankImage”放入嵌套在“tankManagerSprite”中的“tankSprite”中它嵌套在我的主要“_contents”精灵中。正如您在上面链接的图片中看到的那样,它们显示得很好。
我想为坦克制作动画。从我的阅读中,我了解到我需要一个游戏循环,它每隔几分之一秒调用一个方法。根据 Sparrow wiki ( http://wiki.sparrow-framework.org/manual/animation ),要使用 Sparrow 的内置游戏循环功能,我会执行类似以下操作:
将此代码添加到我要使用它的类中的 init 函数中(该类需要是一个SPEvent
:)
// e.g. in the init-method
[self addEventListener:@selector(onEnterFrame:) atObject:self forType:SP_EVENT_TYPE_ENTER_FRAME];
然后把这段代码放在某个地方(我选择把它放在我的 TankManager.m 文件中,但我不知道这是否正确):
- (void)onEnterFrame:(SPEnterFrameEvent *)event
{
for (Tank *thisTank in activeTanks)
{
[thisTank move:event.passedTime];
}
}
然后在-(void)move:(double)timeElapsed;
我的“坦克”类的“”函数中:
-(void)move:(double)timeElapsed{
NSLog(@"xCoord: %f", tankVector.vertex.xCoord);
NSLog(@"yCoord: %f", tankVector.vertex.xCoord);
tankVector.vertex.xCoord += (timeElapsed *20);
tankVector.vertex.yCoord += (timeElapsed *20);
}
结果,我得到NSLog()
如下所示的输出(仅生成一个坦克):
2013-04-20 00:35:43.449 Tank Turret Game[7815:c07] xCoord: 172.677765
2013-04-20 00:35:43.450 Tank Turret Game[7815:c07] yCoord: 172.677765
2013-04-20 00:35:43.482 Tank Turret Game[7815:c07] xCoord: 173.343170
2013-04-20 00:35:43.483 Tank Turret Game[7815:c07] yCoord: 173.343170
2013-04-20 00:35:43.516 Tank Turret Game[7815:c07] xCoord: 174.010696
2013-04-20 00:35:43.516 Tank Turret Game[7815:c07] yCoord: 174.010696
2013-04-20 00:35:43.549 Tank Turret Game[7815:c07] xCoord: 174.679245
2013-04-20 00:35:43.550 Tank Turret Game[7815:c07] yCoord: 174.679245
2013-04-20 00:35:43.583 Tank Turret Game[7815:c07] xCoord: 175.349762
2013-04-20 00:35:43.584 Tank Turret Game[7815:c07] yCoord: 175.349762
2013-04-20 00:35:43.616 Tank Turret Game[7815:c07] xCoord: 176.020950
2013-04-20 00:35:43.616 Tank Turret Game[7815:c07] yCoord: 176.020950
2013-04-20 00:35:43.649 Tank Turret Game[7815:c07] xCoord: 176.679245
2013-04-20 00:35:43.650 Tank Turret Game[7815:c07] yCoord: 176.679245
到目前为止,一切都很好。但是当我看着屏幕时,什么都没有动。我无计可施。我知道解决这个问题可能非常简单,但对于我来说,我找不到它。任何帮助将不胜感激。