0

我是 cocos2d 的初学者。我有不同的精灵,它们每个都运行一些动作和动画。但是我注意到,当我尝试在动作序列中使用一些逻辑,使用CCCalfFunc并执行一些逻辑(更改动画、位置等)时,它会将屏幕上的所有动作冻结大约一秒钟。我猜它阻塞了主线程,但我想知道为什么它不降低帧速率?

它仍然是 60 fps,但每当我运行该动作并执行逻辑时,它都会阻塞一秒钟。我的理解是,在更糟糕的情况下,它会降低帧速率,而不是冻结屏幕的动作。那么在这种情况下有什么解决方案呢?我不想使用NSOperation,GDC,因为我正在更新精灵动画、位置等......

谢谢

4

1 回答 1

0

正如@MrBonjour 提到的,我的问题是我正在使用主线程加载不在缓存中的动画。使用 GCD 解决了我的问题。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),^{
      //Load animations here
    dispatch_sync(dispatch_get_main_queue(),^{
       //Update UI, change frames, run animations,etc...
    });
});
于 2012-10-17T11:27:11.563 回答