cocos2d 警惕 stopAllActions 出错 陷阱 解决办法

本文讨论了在Cocos2d中处理大量Sprite和Action时遇到的问题,特别是频繁启动和停止Action时的错误。提出了解决方案:为每个Action添加Tag,以避免执行stopAllActions时的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当加载的sprite 很多的时候,每个sprite都有N多个action

有一些是序列动作

如下

 CCMoveBy *move = [CCMoveTo actionWithDuration:_moveDuration position:_pullupPoint.point ];
            CCCallFunc* callback = [CCCallFunc actionWithTarget:self selector:@selector(action_Move_PullUp_CallBack_Function:)];
            [callback setTag:999];
            action_Move= [CCSequence actions:move, callback, nil];
            [self runAction:action_Move ];

cocos2d  在执行方法 stopAllActions 时候,,会报错,


报错的原因是没有加 tag 值

这种情况只有在频烦的开始和 stop action 的时候出现,,,解决办法


对每个action  加tag


      下面的方式在特殊情况在会出错(执行stopAllActions出错)

           CCMoveBy *move = [CCMoveTo actionWithDuration:_moveDuration position:_pullupPoint.point ];
            CCCallFunc* callback = [CCCallFunc actionWithTarget:self selector:@selector(action_Move_PullUp_CallBack_Function:)];
        
            [self runAction:[CCSequence actions:move, callback, nil]; ];

改成以下方法



            CCMoveBy *move = [CCMoveTo actionWithDuration:_moveDuration position:_pullupPoint.point ];
            [move setTag:999];
            CCCallFunc* callback = [CCCallFunc actionWithTarget:self selector:@selector(action_Move_PullUp_CallBack_Function:)];
            [callback setTag:999];

 id  action_Move= [CCSequence actions:move, callback, nil];

 [action_Move setTag:999];

            [self runAction:action_Move ];




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值