文章撰寫日期︰2013/12/16 15:15 cocos2d-x使用版本︰2.1.5 cocos2d-html5使用版本︰2.1.5
一、問題
我使用cocos2d-JSB撰寫HTML5/Android/IOS遊戲。今天在B scene觸控一個Button時,
卻發現被釋放的A scene裡的Button物件也被觸控(從LOG得知)。
且A scene的ccb animation動畫並沒有在
var scene = cc.BuilderReader.loadAsScene("B.ccbi"); cc.Director.getInstance().replaceScene(scene);後被釋放掉。
二、解決辦法
理論上一個ccb(CocosBuilder製作岀來的場景)被replace後,所有原場景上的物件和屬性都應該要被釋放了。
但是我現在遇到的狀況並沒有。
而且奇怪的是︰
這個問題在cocos2d-x端沒有問題,
只有在cocos2d-html5上有問題。
後來發現原來我的程式覆寫了onExit()後,
沒有呼叫
this._super();讓父類cc.Node層執行onExit()應該要做的事情。
這導致原本不應該岀現在B scene的A scene(已被釋放的場景)物件被詭異地觸控。
修改後的代碼如下︰
var choiceteacherNode; var ChoiceTeacherScene = function(){ this.onDidLoadFromCCB = function(){ choiceteacherNode = this; this.rootNode.onExit = function(){ cc.Node.prototype.onExit.call(this);//此行等同於this._super();避免岀現詭異觸控。 }; }; };
沒有留言 :
張貼留言