Ui 动画再次加载崩溃问题(临时)解决方法

大家好,近期收到部分用户反馈UI动画在更换场景或多次调用崩溃问题,目前建成是ActionObject问题。
现提供一个较为简单的解决方法,欢迎大家尝试自行修复。
找到CCActionManagerEx.cpp中的下列函数并添加下面四行代码
void ActionManagerEx::initWithDictionary(const char* jsonName,const rapidjson::Value &dic, Ref* root)
{
std::string path = jsonName;
ssize_t pos = path.find_last_of("/");
std::string fileName = path.substr(pos+1,path.length());
CCLOG(“filename == %s”,fileName.c_str());
cocos2d::Vector<ActionObject*> actionList;
int actionCount = DICTOOL->getArrayCount_json(dic, “actionlist”);
for (int i=0; i<actionCount; i++) {
ActionObject* action = new ActionObject();
action->autorelease();
const rapidjson::Value &actionDic = DICTOOL->getDictionaryFromArray_json(dic, “actionlist”, i);
action->initWithDictionary(actionDic,root);
actionList.pushBack(action);
}
//以下几句新增的
auto iterator = _actionDic.find(jsonName);
if (iterator != _actionDic.end())
{
_actionDic.erase(iterator);
}
_actionDic.insert(std::pair<std::string, cocos2d::Vector<ActionObject*>>(fileName, actionList));
}

然后在使用的时候,remove掉UI节点前记得调用_action->stop()停止掉动作。

关于UI动画已经制作了新的动画系统,升级完成,大家可以使用更顺手。

3.0的引擎吗

目前使用的是3.2的版本做的测试。