Ios CCSequence导致应用程序在执行过多CCAction时内存不足

Ios CCSequence导致应用程序在执行过多CCAction时内存不足,ios,cocos2d-iphone,Ios,Cocos2d Iphone,我正在使用Cocos2d在iPad应用程序中创建动画 在应用程序中,用户可以创建动画序列,并选择该序列将重复多少次。出于不相关的原因,我选择将每个动作分成许多小动作——即,如果用户选择移动100分,她将移动2分100次。这可能导致非常大的CCSequence阵列 我发现创建一个大约16k个动作的序列会导致应用程序崩溃。这是预期的行为吗?是否有人知道实现此效果的解决方法,或者我是否需要结束运动的拆分 谢谢 编辑:这是一个截图,描述了我想要达到的效果以及我分割动画的原因。 嗯,这听起来太浪费了。为什

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

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

我发现创建一个大约16k个动作的序列会导致应用程序崩溃。这是预期的行为吗?是否有人知道实现此效果的解决方法,或者我是否需要结束运动的拆分

谢谢

编辑:这是一个截图,描述了我想要达到的效果以及我分割动画的原因。

嗯,这听起来太浪费了。为什么要一次移动对象两个点?如果需要,为什么不在更新方法中移动它,调整位置?这要有效得多。@learncos2D我有一个功能,当一个对象移动时,你可以切换是否在它后面画一条线。线需要准确地跟随移动(因此,如果移动4,则关闭线,移动4,重复该操作将看起来像一条均匀的虚线)。这条线还需要与运动同步——这意味着我不能事先指定这条线,然后让它画出来。除非动画和线条同时移动,否则我无法在小距离内达到我想要的精度-所以移动2,画线条2等等。有什么建议吗?谢谢Raj,很高兴知道。我认为我遇到的问题略有不同,因为它与CCSequence溢出有关(这发生在我有太多CCAction对象之前)。@SamanthaJohn,ok更新了我的答案……基于LearnCos2D的建议:)
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];
    }


}