我正在使用Cocos2d在iPad应用中创建动画。
在应用程序中,用户可以创建一系列动画,并选择该序列重复的次数。出于无关的原因,我选择将每个动作分成许多小动作 - 即如果用户选择移动100分,她将改为移动2分100次。这可能会导致非常大的CCSequence数组。
我发现创建一个大约16k CCActions的序列会导致应用程序崩溃。这是预期的行为吗?有没有人知道实现这种效果的解决方法,还是我需要结束运动的分裂?
谢谢!
编辑:这是一个截图,描述了我想要实现的效果以及我分割动画的原因。
答案 0 :(得分: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];
}
}