2012-02-16 17 views
0

- 私は小さな遅延がある最初の時間をアニメーション化が、2番目の時間にアニメーション化していた場合、それは意志、この問題を克服するためにどのように、完璧な作品(遅延なし)Coco2dアニメーション遅延

私コードは

未満である - (ボイド)animateImages:(NSStringの)animationName startImageName:(NSStringの)SIMAGE individualImageName:(NSStringの*)imgName withDelay:(CGFloat)startFrameを遅らせる:(NSInteger)sFrame endFrame:(NSInteger)eFrame { isAnimating = YES;

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:[NSString stringWithFormat:@"%@.plist",animationName]];   

CCSpriteBatchNode *spriteSheet = [CCSpriteBatchNode batchNodeWithFile:[NSString stringWithFormat:@"%@.png",animationName]]; 

[self addChild:spriteSheet z:0]; 

// Load up the frames of our animation 
NSMutableArray *walkAnimFrames = [NSMutableArray array]; 
for(int i = sFrame; i <= eFrame; i=i+2) { 
    [walkAnimFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"%@ %d.jpg",imgName,i]]];//@"stand march %d.jpg" 
} 


NSLog(@"After NSMutableArray"); 


CCAnimation *walkAnim = [CCAnimation animationWithFrames:walkAnimFrames delay:delay]; 

CCAction *standByAtion =[CCSequence actions:       
         [CCRepeat actionWithAction:[CCAnimate actionWithAnimation:walkAnim restoreOriginalFrame:NO] times:1],[CCCallFunc actionWithTarget:self selector:@selector(setAnimatingToFalseAfterAnimation:)],nil]; 


[walkAnimFrames removeAllObjects]; 
walkAnimFrames=nil; 

CGSize winSize = [[CCDirector sharedDirector] winSize]; 
CCSprite *images = [CCSprite spriteWithSpriteFrameName:[NSString stringWithFormat:@"%@",sImage]];//@"stand march 101.jpg" 

images.position=ccp(winSize.width/2,winSize.height/2); 
images.scaleX=1.6; 
images.scaleY=1.59; 

[spriteSheet addChild:images]; 
[images runAction:standByAtion]; 

NSString *audioName=[NSString stringWithFormat:@"Jump.caf"]; 
[self playSoundEffectNamed:audioName]; 

}事前

答えて

0

おかげで私が正しく理解している場合は、あなたは、単一のアニメーションのフレーム間の異なる遅延を設定するwhant。必要な場合は、フレームを2回以上繰り返すだけで済みます。例: 3フレームのアニメーションがあります.1秒間は1秒、2秒間は2回、0.5秒間は3回目の動画が表示されます。これを行うには、遅延0.5秒のアニメーションを作成し、第1フレームを2つ、第2フレームを第2フレーム、第3フレームを1つ追加します。お役に立てれば。

+0

私は今すぐコードを添付しました – user1179912

0

最初の呼び出しでの遅延は、画像の読み込みのためです。

これを初めて呼び出すと、実際に画像が読み込まれます。これは遅いです。 2回目はディスクから読み込まず、すでに読み込まれたイメージをキャッシュから読み込みます。これは速いです。解決策:これを呼び出す前に、アニメーションのすべてのイメージを一度読み込みます。

+0

私はinitメソッドで私は[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@ "March.plist"]; [CCSpriteBatchNode batchNodeWithFile:[NSString stringWithFormat:@ "March.png"]];初回の読み込みに数秒かかりました – user1179912

+0

シミュレータを使用していますか?これもデバイス上で発生するかどうか確認しましたか? – phlebotinum

+0

また、コードのどの部分が遅延を引き起こしているのか確認しましたか?これらの画像の読み込みは間違いありませんか?それが画像の場合は、事前ロードが期待通りに機能しているかどうかをチェックしましたか?あなたは本当にinitメソッドで正確に同じイメージをロードしていますか? – phlebotinum

関連する問題