0

私はUIImageViewのAPIに似たようなことをしようとしています.5つの画像を指定すると、特定の期間を通じてUIImageViewがそれらの画像を切り替えます. 私は CCSprite でこれを行うことを検討していますが、これを行う唯一の方法は、ノードのフレームまたはそのようなものをカスタマイズすることです。

私が5枚の画像を提供し、4秒でそれらを循環させたい場合、誰かがこのようなことを達成する簡単な方法を知っていますか?

ありがとう!

4

3 に答える 3

3
    //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];
于 2011-10-28T23:00:44.650 に答える
1

5 つの異なる画像で 5 つのスプライトを作成します。それらをすべて同じ位置に配置します。4 つのスプライトを非表示に設定します (sprite.visible = NO)。

スプライトを変更したい場合は、別のスプライトを表示に設定し、現在表示されているスプライトを非表示に設定するだけです。CCFadeTo のようなアクションを適用して、あるスプライトをフェードアウトさせながら別のスプライトをフェードインさせることもできます。

フェードを使用する場合は、パフォーマンス上の理由から、visible プロパティを引き続き設定してください。不透明度が 0 のスプライトは引き続きレンダリングされますが、表示されないスプライトはレンダリングされません。

于 2011-10-28T22:42:42.827 に答える
1

CCAnimationCCAnimateおよびCCSpriteFrameクラスを見てください。

CCSpriteFrame、スプライト シートと呼ばれるより大きなテクスチャの一部を表します。5枚の画像を1枚のシートに入れることができます。

CCAnimationでは、このようなフレームのシーケンスからアニメーションを作成し、アニメーションの実行速度を設定できます。

そして、そのアニメーションをアクションCCAnimateとして実行できます:

[node runAction:[CCAnimate actionWithAnimation:animationInstance restoreOriginal:NO]];

.

リンク

CCSpriteFrame クラス リファレンス

CCAnimation クラス リファレンス

CCAnimate クラス リファレンス

スプライト シートを作成するための Zwoptex - 無料のフラッシュ バージョンもあります

于 2011-10-28T22:58:41.627 に答える