0

「押す」ボタンで、次のようにアニメーションを実行します。

//create sprite
animatedSprite = [[CCSprite alloc] initWithFile:@"transparentPixel.png" rect:CGRectMake(0, 0, 218, 218)];
SET_POS(animatedSprite, 167, 51);
[self addChild:animatedSprite z:5000];
//animate sprite            
[animatedSprite runAction:[CCAnimate actionWithAnimation:[[CCAnimationCache sharedAnimationCache] animationByName:@"skill1use"]]];
//run cleanup fnktion
[animatedSprite performSelector:@selector(removeFromParentAndCleanup:) withObject:[NSNumber numberWithBool:YES] afterDelay:3];            
[animatedSprite release];

以前、フレームに次のものをロードしました。

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:[CCDirector sharedDirector].contentScaleFactor>1?@"skill_01_ani@2x.plist":@"skill_01_ani.plist"];
[[CCAnimationCache sharedAnimationCache] addAnimation:[CCAnimation animationWithSpriteSequence:[CCDirector sharedDirector].contentScaleFactor>1?@"skill_01_ani%04d@2x.png":@"skill_01_ani%04d.png" numFrames:34 delay:1/24.0] name:@"skill1use"];

ただし、アニメーションは、最初から開始するまでに時間がかかるため、最初から非常にスムーズに実行されます。アニメーションのプリロードが間違っていますか?初めてアニメーションをスムーズに実行する方法はありますか?

アップデート

プレビューで以下を設定すると、最初は高速に実行されます。

CCSprite *animatedSprite = [[CCSprite alloc] initWithFile:@"transparentPixel.png" rect:CGRectMake(0, 0, 218, 218)];
[self addChild:animatedSprite z:5000];
[animatedSprite runAction:[CCAnimate actionWithAnimation:[[CCAnimationCache sharedAnimationCache] animationByName:@"skill1use"]]];
[animatedSprite performSelector:@selector(removeFromParentAndCleanup:) withObject:[NSNumber numberWithBool:YES] afterDelay:3];
[animatedSprite release];

アニメーションを実行するのと同じなので。ただし、これは実際にアニメーションを表示する場合にのみ機能します(addChildとすべてを含む)

4

1 に答える 1

1

私の知る限り、このアクションは最初に CCAnimation オブジェクトを作成し、それを CCAnimationCache に格納します。アニメーションを事前にキャッシュするか、init メソッドで初期化してから、保存してください。ボタンをクリックすると、アニメーションではなくアクションが再作成されます。

于 2012-10-10T13:35:42.647 に答える