【解决】疯狂报错:tween.js:262 Please set target to tween first


cocos creator 2.4版本


首先描述一下基本场景情况:

游戏两个场景,一个是startMenu,也就是主界面菜单,一个是game,管理游戏内容的;game下有设置面板节点,设置面板有返回主页按钮,点击后发出全局信号,播放退出动画,切换场景;


问题来了:

刚开始好好地,缓动系统控制的动画正常播放;但是当返回一次主页后(切换场景)再次开始游戏,缓动就会出现问题,如图所示:tween.js:262 Please set target to tween first,疯狂报错,来回切换多次,就会疯狂叠加报错。求解。


【代码如下】

// settingPanel.js

// 出现settingPanel;
showSettingPanel() {
    cc.tween(this.node)
        .to(0.3, { y: 100 }, { easing: 'expoOut' })
        .start()
},

// 关闭settingPanel;
closeSettingPanel() {
    cc.tween(this.node)
        .to(0.3, { y: 1080 }, { easing: 'expoOut' })
        .start()     // 第53行
},

// mainUI.js

// 返回主菜单,场景淡出动画,0.5秒;
sceneFadeOutAni() {
    cc.tween(this.fourRoomNode)
        .to(0.5, { y: 1080 }, { easing: 'expoOut' })
        .start()
    cc.tween(this.mainBtnPanelNode)
        .to(0.5, { y: -640 }, { easing: 'expoOut' })
        .start()
    cc.tween(this.propIndicatorNode)
        .to(0.5, { y: -640 }, { easing: 'expoOut' })
        .start()
},

【层级结构】

基本规律是,每切换一次场景,报错就会多一个,切换1次,一个tween报错1个,切换3次,1个tween报错3个,场景涉及6个tween就报错18个。

自己给解决了:原因是全局事件管理系统重复了,由于动画是根据全局信号控制的,之前切换场景时没有把事件删除,现在每次切换回去时都给清空,问题解决了。

我这开发中也遇到了

,如果使用异步加载资源,然后在异步外使用就会警告

楼主这个怎么感觉像是内存泄漏了

我这开发中也遇到了

,如果使用异步加载资源,然后在异步外使用就会警告
我这个是因为,资源未加载完成,节点就被销毁的原因(自己些的destory逻辑的原因)