私はUIImageViewのAPIに似たようなことをしようとしています.5つの画像を指定すると、特定の期間を通じてUIImageViewがそれらの画像を切り替えます. 私は CCSprite でこれを行うことを検討していますが、これを行う唯一の方法は、ノードのフレームまたはそのようなものをカスタマイズすることです。
私が5枚の画像を提供し、4秒でそれらを循環させたい場合、誰かがこのようなことを達成する簡単な方法を知っていますか?
ありがとう!
私はUIImageViewのAPIに似たようなことをしようとしています.5つの画像を指定すると、特定の期間を通じてUIImageViewがそれらの画像を切り替えます. 私は CCSprite でこれを行うことを検討していますが、これを行う唯一の方法は、ノードのフレームまたはそのようなものをカスタマイズすることです。
私が5枚の画像を提供し、4秒でそれらを循環させたい場合、誰かがこのようなことを達成する簡単な方法を知っていますか?
ありがとう!
//initialize anitmation
CCAnimation *anime= [[CCAnimation alloc] initWithName:@"anime" delay:4.0];
for(int i = 1; i <= 5; i++){
[anime addFrameWithFilename:[NSString stringWithFormat:@"frame%d.png", i]];
}
id animeAction = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:anime]];
[self runAction:animeAction];
5 つの画像を取り、4.0 周期でアニメーション化します。
-----編集-----新しいCocos2d Api 1.0.1でそれを行う方法は次のとおりです。
//initialize anitmation
CCAnimation *anime= [CCAnimation animation];
anime.delay = 4.0;
for(int i = 1; i <= 5; i++){
[anime addFrameWithFilename:[NSString stringWithFormat:@"frame%d.png", i]];
}
id animeAction = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:anime]];
[self runAction:animeAction];
5 つの異なる画像で 5 つのスプライトを作成します。それらをすべて同じ位置に配置します。4 つのスプライトを非表示に設定します (sprite.visible = NO)。
スプライトを変更したい場合は、別のスプライトを表示に設定し、現在表示されているスプライトを非表示に設定するだけです。CCFadeTo のようなアクションを適用して、あるスプライトをフェードアウトさせながら別のスプライトをフェードインさせることもできます。
フェードを使用する場合は、パフォーマンス上の理由から、visible プロパティを引き続き設定してください。不透明度が 0 のスプライトは引き続きレンダリングされますが、表示されないスプライトはレンダリングされません。
CCAnimation
、CCAnimate
およびCCSpriteFrame
クラスを見てください。
はCCSpriteFrame
、スプライト シートと呼ばれるより大きなテクスチャの一部を表します。5枚の画像を1枚のシートに入れることができます。
CCAnimation
では、このようなフレームのシーケンスからアニメーションを作成し、アニメーションの実行速度を設定できます。
そして、そのアニメーションをアクションCCAnimate
として実行できます:
[node runAction:[CCAnimate actionWithAnimation:animationInstance restoreOriginal:NO]];
.
スプライト シートを作成するための Zwoptex - 無料のフラッシュ バージョンもあります