2010-12-03 11 views
0

私はレイWenderlichによって3枚の単純な画像私は(鶏の歩行)をアニメーション化しようとしています2羽の鶏(6枚)のために、各非常に良いチュートリアルを使用してあります。フレームレート(FPS)は、Coco2dゲームのiPhoneでgdecreaseを開始しますか?

http://www.raywenderlich.com/1271/how-to-use-animations-and-sprite-sheets-in-cocos2d

アニメーションゲームを始めるとうまくいきますが、2-3分後にフレームレートが落ち始め、ゆっくりと10以下に下がり、アプリケーションがハングアップします。btw iOS 4.1でiPhone 3Gを使用しています...その理由がありますFPSを落とすか、まもなくiPhoneがアイドルになるのですか?

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"hen.plist"];   


CCSpriteBatchNode *spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"hen.png"]; 
[self addChild:spriteSheet]; 

// Load up the frames of our animation 
NSMutableArray *walkAnimFrames = [NSMutableArray array]; 
for(int i = 1; i <= 3; ++i) { 
    [walkAnimFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"%d.png", i]]]; 
} 
CCAnimation *walkAnim = [CCAnimation animationWithFrames:walkAnimFrames delay:0.1f]; 

self.bear = [CCSprite spriteWithSpriteFrameName:@"1.png"];   
_bear.position = ccp(20,400); 
self.walkAction = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:walkAnim restoreOriginalFrame:NO]]; 
[_bear runAction:_walkAction]; 
[spriteSheet addChild:_bear]; 

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"monkey.plist"];   


CCSpriteBatchNode *spriteSheetMonkey = [CCSpriteBatchNode batchNodeWithFile:@"monkey.png"]; 
[self addChild:spriteSheetMonkey]; 

NSMutableArray *walkAnimFramesMonkey = [NSMutableArray array]; 
for(int i = 1; i <= 3; ++i) { 
    [walkAnimFramesMonkey addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"%d.png", i]]]; 
} 
CCAnimation *walkAnimMonkey = [CCAnimation animationWithFrames:walkAnimFramesMonkey delay:0.1f]; 


self.monkey = [CCSprite spriteWithSpriteFrameName:@"1.png"];   
_monkey.position = ccp(40,80); 
self.walkMonkey = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:walkAnimMonkey restoreOriginalFrame:NO]]; 
[_monkey runAction:_walkMonkey]; 
[spriteSheetMonkey addChild:_monkey]; 
float bearVelocity = 480.0/3.0; 

CGPoint moveDifferenceHen = ccpSub(HenLoction, _bear.position); 
float distanceToMoveHen = ccpLength(moveDifferenceHen); 
float moveDurationHen = distanceToMoveHen/bearVelocity; 

self.moveAction = [CCSequence actions:       
         [CCMoveTo actionWithDuration:moveDurationHen position:HenLoction], 
         [CCCallFunc actionWithTarget:self selector:@selector(bearMoveEnded)], 
         nil 
         ]; 


[_bear runAction:_moveAction]; 
+0

これを助けたい場合は、おそらくコードを投稿する必要があります。 –

+0

私はコードを追加しました...私は漏れを表示するためにそれを実行しようとすると、漏れは表示されませんが、オブジェクト割り当ては非常に高く、私はタイマーごとに1秒ごとにこのコードを呼び出します。 – hemant

答えて

1

あなたはメモリリークの可能性があります。私のアドバイスは、デバイス上でLeaksとObjectAlloc Instrumentsを実行することです。また、より詳細な支援が必要な場合は、関連するコードを投稿する必要があります。

+0

それも私の前提です。 –

+0

私はコードを追加しました...私は漏れがないことを示しているが、それは漏れを表示しようとするが、オブジェクトの割り当ては非常に高いので、私も毎秒1秒のタイマーでこのコードを呼び出すようにしています。 – hemant

0

メモリリークが発生している可能性が高いです。

そうでなければ、あなたは横断しているデータ構造、時間の経過とともに構築している意思決定ツリーのような要素を見ます。必ずしもメモリリークはないが、何かが正当に大きくなったり複雑になったりする可能性があり、処理時間が長くなることがあります。

アプリが数秒から数えて何回も作業しなければならない場合、すべてが遅くなります。それは、今までに数分で2倍も複雑になったり、大きくなったりするようなものかもしれません。早い倍加はまだ高速で計算が簡単です。たとえば、オリジナルの256倍から512倍に倍増すると、減速が明らかになる。

+0

私はコードを追加しました...私は漏れを表示するためにそれを実行しようとすると、漏れは表示されませんが、オブジェクトの割り当ては非常に高いです。 – hemant

+0

プレイヤーがゲームをプレイする際に割り当てる必要のあるオブジェクトがますます増えていますか?また、AppDelegateでメモリ警告を受け取っているかどうかを確認することもできます。これは、あまりにも多くのメモリを食べていることを意味し、処理が遅くなっていることを意味します。 –

関連する問題