0

提案どおりにコードを調整した後、アニメーションが機能するようになりました。さて、スプライトの動きを逆にする方法をお聞きしたいと思います。風が吹いているかのようにスプライトを動かそうとしています。ここに私のコードがあります:

-(id) init
{
// always call "super" init
// Apple recommends to re-assign "self" with the "super's" return value
if( (self=[super init]) ) {
    CGSize winSize = [[CCDirector sharedDirector] winSize];
    self.isTouchEnabled = YES;

    CCSprite *black = [CCSprite spriteWithFile:@"b.png"];
    black.position = ccp(100, 160);
    black.scaleX = 100 / black.contentSize.width;
    black.anchorPoint = ccp(0.03, 0);

    CCSpriteFrameCache *frame = [CCSpriteFrameCache sharedSpriteFrameCache];
    [frame addSpriteFramesWithFile:@"bLongAnimation.plist"];
    CCSpriteBatchNode *bHair = [CCSpriteBatchNode batchNodeWithFile:@"bLongAnimation.png"];
    [self addChild:bHair];

    [self addChild:black z:1 tag:1];

    //Animation
    NSMutableArray *animateBlackHair = [NSMutableArray arrayWithCapacity:10];
    for (int i = 1; i < 10; i++)
    {
        NSString *animBlackHair = [NSString stringWithFormat:@"b%i.png", i];
        CCSpriteFrame *blackFrame = [frame spriteFrameByName:animBlackHair];
        [animateBlackHair addObject:blackFrame];

        //I added this code block thinking it might work
        for(i = 10; i > 1; i--)
        {
            NSString *revAnimation = [NSString stringWithFormat:@"bRightLong%i.png", i];
            CCSpriteFrame *revFrame = [frame spriteFrameByName:revAnimation];
            [animateBlackHair1 addObject:revFrame];
        }
    }
    CCAnimation *blowHair = [CCAnimation animationWithSpriteFrames:animateBlackHair delay:0.1];
    CCAction *blowingHair = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:blowHair]];
    [black runAction:blowingHair];        
}
return self;}

私の推測はうまくいかなかったので、最初の動きが終わったらすぐに動きを元に戻す方法を考えていましたか?

更新:気にしないでください、私はそれを理解しました。アクションを逆にするための for ループを他のループの外に移動しました。お手伝いありがとう。

4

1 に答える 1

2

アニメーションの遅延を 0 以外に設定してみてください。0.1 や 0.4 などを試してください。ゼロに設定すると、アニメーションは実行されないと思います。実行された場合、実行が速すぎて表示されません。

于 2013-02-01T02:53:35.593 に答える