过去两天我一直在搜索网页,试图找到一个完整的例子,说明如何在Sparrow中使用内置的游戏循环功能进行ios开发。我正在为一个学校项目开发一种塔式防御型游戏。播放器控制屏幕中央的炮塔,而坦克从所有4个侧面随机进入屏幕。以下是屏幕截图的链接:
我有一个" TankManager"创建和处理我" Tank"的实例的类通过将{坦克'的实例存储在一个名为" activeTanks"的NSMutableArray
中,并将我的" tankImage"进入" tankSprite"它嵌套在" tankManagerSprite"它嵌套在我的主要" _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
到目前为止一切顺利。但是当我看着屏幕时,没有任何动静。我智慧结束了。我知道对此的解决方案可能非常简单,但对于我的生活,我无法找到它。任何帮助将不胜感激。