2014-01-09 48 views
0

我試圖創建一個具有createjs此事件功能的基類,然後從這個基類創建子類,但如果我再嘗試使用的addEventListener的子類的實例,我得到的錯誤:CreateJS此事件和繼承

TypeError: _subClass.addEventListener is not a function 

我的類的構造函數是這樣的:

var BaseClass = function(id) 
{ 
    _instance = this; 
    _id = id; 
    createjs.EventDispatcher.initialize(BaseClass.prototype); 
}; 

var SubClass = function(id) 
{ 
    BaseClass.call(this, id); 
    SubClass.prototype = Object.create(BaseClass.prototype); 
    _instance = this; 
}; 

我怎樣才能使它發揮作用,這樣子類繼承自BaseClass的應用CreateJS事件調度功能?

createjs.EventDispatcher.initialize(SubClass.prototype); 
+1

如果您正在使用EaselJS 0.7.0或以上,你可以繼承此事件相反,這是什麼EaselJS類現在要做的。 – Lanny

+0

你的意思是我應該使用BaseClass.prototype = new createjs.EventDispatcher();在我的基類?但即使這樣也解決不了我的問題。 – BadmintonCat

回答

0

你應該初始化期間初始化原型,而不是在構造函數:到目前爲止,只有我還申請了事件調度在子類的構造函數,但不知何故違抗繼承的全部目的的作品。下面是一個更新的小提琴:http://jsfiddle.net/lannymcnie/qTHb4/

var BaseClass = function(id) 
{ 
    _instance = this; 
    _id = id; 
}; 
createjs.EventDispatcher.initialize(BaseClass.prototype); 

var SubClass = function(id) 
{ 
    BaseClass.call(this, id); 
    _instance = this; 
}; 
SubClass.prototype = BaseClass.prototype; 
+0

做到了,但沒有奏效。仍然收到錯誤。順便說一句,初始化發生在JS?我想它是在JS文件加載後立即執行的代碼? – BadmintonCat

+0

如果你把它放在構造函數中,你必須等到構造函數被調用(使用'new class()')。我發佈的小提琴適用於這些變化。讓我知道你是否仍然有麻煩。 – Lanny