1

私の iOS ゲームでは、画面がタッチされてヒーローがジャンプするまで、ヒーローが走り続けることを願っています。だから私は書く:
.h ファイルで:

@interface Hero : CCSprite {
    CCSprite *_hero;
    id _keepRunning;
}
@property(nonatomic,retain) id keepRunning;

.m ファイル内:

@synthesize keepRunning = _keepRunning;
-(id) init {
    _keepRunning = [CCRepeatForever actionWithAction:[CCAnimate actionWithSpriteSequence:@"heroRun%04d.png"
                                                                               numFrames:30
                                                                                   delay:0.02f
                                                                    restoreOriginalFrame:NO]];        
}

次に、ゲームが開始したら、run() メソッドを呼び出します。

-(void) run {
    [_hero stopAllActions];
    [_hero runAction:_keepRunning];
    _heroState = RUNNING;
}

その後CCAnimate actionWithSpriteSequence: numFrames: delay: restoreOriginalFrame:、cocos2d v2.0 で非推奨になっていることがわかりました。私の質問は、cocos2d v2.0 で、このアニメーションをどのように実装できますか? つまり、私のヒーローを動かし続けますか?ありがとうございました!
編集:
私はこれを試しました:

-(CCAnimation*) getMyAnimationWithFramesName:(NSString*)nameFormat numFrames:(int)numFrames delay:(float)delay {
    NSMutableArray *frames = [[NSMutableArray alloc] init];
    for (int i = 1; i <= numFrames; i++) {
        NSString *frameName = [NSString stringWithFormat:nameFormat,i];
        [frames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:frameName]];
    }
    CCAnimation *ani = [CCAnimation animationWithSpriteFrames:frames delay:delay];
    return ani;
}

次に、init()で:

_keepRunning = [self getMyAnimationWithFramesName:@"heroRun%04d.png" numFrames:30 delay:0.02f];

そして実行中():

[_hero runAction:[CCAnimate actionWithAnimation:_keepRunning]];

しかし、それでもうまくいきません。私は何をすべきか?

4

1 に答える 1

2

まず、' http://www.codeandweb.com/texturepacker/download ' から Texture をダウンロードし、p-List を作成して以下のコードで使用します。

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

CCSpriteBatchNode *spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"AnimatedMan.png"];

[self addChild:spriteSheet];

フレーム(スプライト)のリストを集める

NSMutableArray *walkAnimFrames = [NSMutableArray array];
for (int i=1; i<=6; i++) {
    [walkAnimFrames addObject:
     [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:
      [NSString stringWithFormat:@"step0%d.png",i]]];
}

スプライトにアクションを与える

CCAnimation *walkAnim = [CCAnimation animationWithSpriteFrames:walkAnimFrames delay:0.1f];

        manSprite=[CCSprite spriteWithSpriteFrameName:@"step01.png"];
        manSprite.position=ccp(winsize.width/2, winsize.height/2-40);

Sprite RepeatetForever for manSprite

id first=[CCSequence actions:[CCRepeatForever actionWithAction:
                                      [CCAnimate actionWithAnimation:walkAnim]],nil];

[manSprite runAction:first];
于 2013-10-15T05:30:40.817 に答える