2010-11-28 11 views
0

私には3つの質問があります。 CCSpriteのcocos2d.Whenロットでfpsの速度定数(ほとんど)を維持するための方法cocos2dでfpsレートを一定に保つ方法

  1. は、毎秒(5-8)のような小さな間隔内で削除して作成それはlmost一定のフレームレートを維持することができます?

  2. [self removeChild:sprite cleanup:YES]です十分ですか私はまた、次のコードの一部は、より良い方法で同じタスクを達成するために、私のフレームdrop.Howに責任がある

    CCTexture2D *texture = [sprite texture]; [[CCTextureCache sharedTextureCache] removeTexture: texture]; 
    
  3. を使用する必要がありますか?

    id fadeout = [CCFadeOut actionWithDuration:1.4f]; 
    
    id call = [CCCallFunc actionWithTarget:self 
    selector:@selector(RemoveSmashedSprite:)]; 
    
    CCSequence* sequence= [CCSequence 
    actions:fadeout, call, nil]; 
    
    [smash runAction:sequence]; 
    

    ...と...

    > -(void)RemoveSmashedSprite:(id)sender 
    { 
    
    
        CCSprite *sp = (CCSprite *)sender; 
    
    
    
        [self removeChild:sp cleanup:YES]; 
    
    } 
    

これは毎秒5~8回呼び出されます。したがって、フレームレートは下がります。誰も私を助けることができますか?

+0

からこのアクションを実行しているノードを削除します。[自己のremoveChild:SPクリーンアップ:YES]送信者のスプライトスマッシュを削除しませんでした。ゲームが進行するにつれてスマッシュスプライトが追加されましたが、削除されず、メモリ要件が大きくなり、フレームレートが低下しました.CFFadeOutをシーケンス私はスマッシュスプライトが削除されていないことを理解できませんでした、ただフェードアウトします。 – russell

答えて

0

テクスチャを短期間で再利用する場合は、テクスチャを削除しないでください。性能面で大きな欠点がある一方で、メモリにのみ有益です。

フレームレートを一定に保つには、スプライトを作成および削除するのではなく、スプライトを再利用することができます。 removeChildを呼び出す代わりに、visible = NOを設定して未使用のスプライトの配列に追加することができます。次に、これらのスプライトの新しいものが必要なときは、その未使用の配列に何かがあるかどうかをチェックし、空の場合は新しいものを作成します。こうすることで、作成され、破棄されたスプライトの量を最小限に抑えることができます。この中へ

id call = [CCCallFunc actionWithTarget:self selector:@selector(RemoveSmashedSprite:)]; 

id call = [CCCallFuncN actionWithTarget:self selector:@selector(RemoveSmashedSprite:)]; 
+0

あなたのreply.ButのためのThanx私はちょうど作成し、フレームを落とさない秒あたり5-8時間スプライトを削除する場合気づいた。しかし[CCFadeOut actionWithDuration:1.4f]を使用する場合、それはフレームレートをダウンさせます。なぜこれが起こり、それを緩和するのですか? – russell

0

変更。

id action = [CCActionRemove action];

このアクションは、私がproblem.The問題was- CCSpriteの*のSP =(CCSprite *)送信者を発見し、最後にその親

0

あなたが代わりにCCCallFuncの、あなたの最後のアクションとして削除アクションを使用することができ、この

関連する問題