我正在尝试通过渲染UIImage
'帧'来扩展Apple Watch可以执行的操作,然后每隔500毫秒(每秒2帧)将其设置在WKInterfaceImage
上。
我的计划是尝试渲染不需要高细节或帧率的8位风格游戏,然后在手表应用程序上获取箭头按钮来指导游戏状态的变化。
所以我有一个Game类,它有一个'tick'方法,返回UIImage
。每次调用'tick'都将以单点进行游戏。想想俄罗斯方块,游戏的每个“滴答”都会将下降的块向下移动一个块空间。游戏按“滴答”进行,直到有来自用户的交互。在调用旋转块时,我告诉Game类在下一个'tick'发生时向左或向右旋转。以下是我WKInterfaceController
课程的相关部分。
- (void)willActivate
{
// This method is called when watch view controller is about to be visible to user
NSLog(@"%@ will activate", self);
// wait 2 seconds until game 'starts'
[self performSelector:@selector(timerFired) withObject:nil afterDelay:2.];
}
- (void)timerFired
{
dispatch_async(dispatch_get_main_queue(), ^{
[self.theImage setImage:[self.game tick]];
[self performSelector:@selector(timerFired) withObject:nil afterDelay:.5];
});
}
- (IBAction)leftButtonPressed
{
self.game.futureMove = FutureMoveAntiClockWise;
}
- (IBAction)rightButtonPressed
{
self.game.futureMove = FutureMoveClockWise;
}
现在,令人惊讶的是,所有代码都运行良好 - 只需几秒钟。然后它变得越来越慢,越来越多(在帧数方面)。大约10秒后,按下旋转的左或右按钮仅在几秒钟后显示在渲染的UIImage
上。
手表应用程序开始渲染每秒30帧(如果我想要它),然后爬行越来越慢,最终停止。有没有更好的方法可以setImage
在WKInterfaceImage
上反复可靠而不会放慢速度?
我太近了!!
答案 0 :(得分:0)
感谢您的评论。更新到Xcode 6.3后它工作正常并且没有滞后但我会留意@MikeSwanson并期望Apple拒绝我的应用程序:(。