[cocos2d-html5/JSB篇]場景(Scene)觸控錯亂

文章撰寫日期︰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();避免岀現詭異觸控。
        };
     };
};

沒有留言 :

張貼留言