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