场景冻​​结特定动作

时间:2012-10-15 08:57:23

标签: objective-c cocos2d-iphone

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

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

由于

1 个答案:

答案 0 :(得分: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...
    });
});