我是cocos2d的初学者。我有不同的精灵,他们每个都运行一些动作和动画。但我注意到,当我尝试在动作序列中使用某些逻辑时,使用CCCalfFunc
并执行一些逻辑(更改动画,位置等等),它会冻结屏幕上的所有操作第二。我想这是阻塞主线程,但我想知道为什么它不降低帧速率?
它仍然是60 fps,但每当我运行该动作并执行逻辑时,它会持续阻塞一秒钟。 我的理解是,在更糟糕的情况下,它会降低帧速率,而不是通过操作冻结屏幕。那么在这种情况下可以采用什么解决方案呢?我不想使用NSOperation
,GDC,因为我正在更新精灵动画,位置等......
由于
答案 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...
});
});