1

我正在使用 Cocos2d 在 iPad 应用程序中创建动画。

在应用程序中,用户可以创建一系列动画并选择该序列重复的次数。由于不相关的原因,我选择将每个动作分成许多小动作——即如果用户选择移动 100 分,她将改为移动 2 分 100 次。这会导致非常大的 CCSequence 数组。

我发现创建大约 16k CCAction 的序列会导致应用程序崩溃。这是预期的行为吗?有谁知道实现这种效果的解决方法,还是我需要结束运动的分裂?

谢谢!

编辑:这是一个截图,描述了我想要实现的效果以及我拆分动画的原因。 在此处输入图像描述

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 回答