1

Cocos2d を使用して、iPad アプリでアニメーションを作成しています。

アプリでは、ユーザーは一連のアニメーションを作成し、そのシーケンスを繰り返す回数を選択できます。これとは関係のない理由で、各アクションを多くの小さなアクションに分割することにしました。つまり、ユーザーが 100 ポイント移動することを選択した場合、代わりに 2 ポイントを 100 回移動します。これにより、CCSequence 配列が非常に大きくなる可能性があります。

約 16k の CCActions のシーケンスを作成すると、アプリがクラッシュすることがわかりました。これは予想される動作ですか?この効果を達成するための回避策を知っている人はいますか、それとも動きの分割を終了する必要がありますか?

ありがとう!

編集:これは、達成したい効果とアニメーションを分割する理由を示すスクリーンショットです。 ここに画像の説明を入力

4

1 に答える 1

0
typedef enum Actor_STATE{
    kState_MovingLeft = 14001,
    kState_MovingRight
}ActorState;


@interface HorseRider : CCSprite
{
    ActorState mState;
    float mMoveSpeed;
}
@property(nonatomic, assign) ActorState     state;

//implementation of HorseRider

-(void)updateRider
{
    CGPoint pos = self.position;

    if(self.state == kState_MovingLeft)
    { 
        pos.x -= mMoveSpeed;

        if(pos.x>screenWidth)
        {
           state = kState_MovingRight; 
           continue;
        }
    }
    else 
    { 
       pos.x += mMoveSpeed;

        if(pos.x>0.0f)
        {
           state = kState_MovingRight; 
           continue;
        }

        [self createTrackDots];

    }

    self.position = pos;
}

-(void) createTrackDots
{
   if(ABS(lastDots.x - self.position.x) > MIN_DOT_DISTANCE)
   {
      [self createDotsAtPos: self.position]; 
   }
}


//Game init
-(id)init
{
    …
    hero = [HorseRider spriteWithSpriteFrameName:FRAME_NAME];
    hero.state = kState_MovingLeft;
    ….
    [self schedule: @selector(tick:)];
}


-(void) tick: (ccTime) dt
{    
   if(self.isGamePaused || self.isGameOver )
    {
        [hero updateRider];
    }


}
于 2012-10-26T06:22:48.043 に答える