如何在Sparrow中创建游戏循环并在每个帧周期刷新显示?

时间:2013-04-20 06:41:18

标签: ios sparrow-framework

过去两天我一直在搜索网页,试图找到一个完整的例子,说明如何在Sparrow中使用内置的游戏循环功能进行ios开发。我正在为一个学校项目开发一种塔式防御型游戏。播放器控制屏幕中央的炮塔,而坦克从所有4个侧面随机进入屏幕。以下是屏幕截图的链接:

https://www.dropbox.com/s/sqleuqza9dcgiqs/iOS%20Simulator%20Screen%20shot%20Apr%2019%2C%202013%2010.53.54%20PM.png

我有一个" 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

到目前为止一切顺利。但是当我看着屏幕时,没有任何动静。我智慧结束了。我知道对此的解决方案可能非常简单,但对于我的生活,我无法找到它。任何帮助将不胜感激。

0 个答案:

没有答案