尝试使用Cocos2d效果并创建方法来显示和停止Liquid动作。然而,当应用效果时,我的应用程序从60fps下降到30fps,但是当调用预定的停止动作时,fps不会再次增加。
我原本以为虽然动作已经完成,但效果仍在渲染,但在阅读了Cocos2D 0.8 zip中的EffectsTest.h / .m之后,我找不到任何关于如何实现这一点的参考。任何人都可以对这个问题有所了解吗?
// effects
-(void)enableLiquidEffect
{
id liquid = [Liquid actionWithWaves:6 amplitude:20 grid:ccg(15, 10) duration:3];
[self schedule:@selector(disableLiquidEffect) interval:(3.0)];
[self runAction:liquid];
}
-(void)disableLiquidEffect
{
[self unschedule:@selector(disableLiquidEffect)];
[self stopAllActions];
}
干杯,
AntonMills
答案 0 :(得分:0)
只是一个猜测,但由于该项目仍然会将变换设置为液体,因此它仍在尝试应用更复杂的变换,然后在完成之后需要。在开始之前保存转换,然后在停止转换时将其保存。您可以尝试将其设置为nil。
答案 1 :(得分:0)
这里只是一个小小的提示,我知道这是几年前被问过的,但是有人可能还会来这里 代码有点矫枉过正,这是怎么做的:
// effects
-(void)enableLiquidEffect
{
id liquid = [Liquid actionWithWaves:6 amplitude:20 grid:ccg(15, 10) duration:3];
//No need to unschedule after 3 seconds since you already set duration-^ to 3 seconds.
[self runAction:liquid];
}
-(void)disableLiquidEffect
{
[self stopAllActions];
}
除了代码是完美的