使用动作系统,内存不断增长,内存泄漏

项目中大厅需要做一个公告模块,文字的移动用到了动作系统,大概代码:
start: function()
{
this.schedule(this.moveSpeakerBoardTxt, 6.5);
},
//移动公告文字
moveSpeakerBoardTxt: function(distance)
{
var finished = cc.callFunc(function(){
RoomNotices.instances.speakerTxt.node.stopAllActions();
})
var sumTime = 6;
var move0 = cc.moveTo(1, cc.p(this.systemStartPos.x, -1));
var move1 = cc.moveTo(1, cc.p(this.systemStartPos.x, 36));
if(distance == -1){
let delayTime = cc.delayTime(4);
this.speakerTxt.node.runAction(cc.sequence(move0, delayTime, move1, finished));
}
else{
let delayTime = cc.delayTime(1.5);
var moveBy1 = cc.moveBy(1, cc.p(-distance, 0));
var moveBy2 = cc.moveBy(1, cc.p(0, 36));
this.speakerTxt.node.runAction(cc.sequence(move0, delayTime, moveBy1, delayTime, moveBy2, finished));
}
},
每次执行runAction,内存都会增加0.2M左右,随时间推移内存会一直增加上去,不会释放。这样在大厅该停留久了内存过高,切场景很容易就导致崩溃

有什么方法可以让之前的动作所产生的对象释放掉吗?

let delayTime = cc.callFunc(function(){
cc.delayTime(1.5);
})
var action = cc.sequence(move0, delayTime, moveBy1, delayTime, moveBy2, finished);

this.speakerTxt.node.runAction(action);

这样试试?

moveSpeakerBoardTxt: function(distance)

这个参数是哪来的?

这个参数没用 忘记删了

那就删掉试试吧

延迟为啥要这样写,这样在squence里面不会有延迟效果

这个是动作回调吧,单单想让他延迟

那就得找找其他原因了吧…
你可以单独把这段代码写个demo 看看是不是因为runAction导致内存泄漏

把这些代码注释掉,内存就稳定在那边:cry:

有什么报错或者警告吗

没有。。

你说的这些代码是哪些

你还是截图 或者直接把js文件上传吧 :sweat_smile:

错了 我后来又代码逐段注释,终于发现原来不是动作系统导致的,而是动态改变富文本的内容导致的。去看了文档,在Richtxt介绍最后才发现这个解释:


看来不能用富文本了:cry: