2009-08-17 6 views
1

en essayant de jouer avec les effets Cocos2d et créé des méthodes pour afficher et arrêter l'action liquide. Mon application chute cependant de 60fps à 30fps lorsque l'effet est appliqué mais le fps n'augmente pas à nouveau lorsque l'action d'arrêt programmée est appelée.Cocos2D iPhone Effect

A l'origine, je pensais que l'effet était encore rendu, mais après avoir lu le EffectsTest.h/.m dans le zip de Cocos2D 0.8 je ne trouve aucune référence à la façon dont cela est réalisé. Quelqu'un peut-il faire la lumière sur cette question?

// 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]; 
} 


Cheers,
AntonMills

Répondre

0

Juste une petite astuce ici, je sais que cela a été demandé il y a quelques années, mais quelqu'un pourrait encore venir ici le code est un surpuissant petit peu, voici comment faire:

// 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]; 
} 

outre que le code est parfait

0

Juste une supposition mais étant donné que l'élément aura encore une transformation définie au liquide qu'il tente toujours d'appliquer une transformation plus complexe alors nécessaire après son fait. Sauvegardez votre transformation avant de commencer, puis quand elle s'arrête, réglez-la. Vous pourriez essayer de le régler à zéro.

Questions connexes