2014-01-14 80 views
0

在我的代碼開始時,我設置了一個tick事件。以下3條線路有效。Javascript - easelJS - 如何刪除AllListeners

createjs.Ticker.addEventListener("tick", handleTick); 
createjs.Ticker.useRAF = true; 
createjs.Ticker.setFPS(30); 

我想在我的代碼結束時刪除監聽器。我試圖這樣稱呼它,但它不起作用:

createjs.Ticker.removeAllListeners(); 

Firefox控制檯說我createjs.Ticker.removeAllListeners is not a function。 所以我試圖切換到另一個:

createjs.Ticker.removeEventListener("tick", handleTick); 

而且它也行不通。 我真的不知道如何使用它。在官方網站上,他們使用displayObject,但我沒有創建鏈接到按鈕或其他東西。

http://www.createjs.com/Docs/EaselJS/classes/Ticker.html#method_removeAllEventListeners

可能有人可以幫助我解決這個問題嗎?

感謝

編輯:我使用的是easelJS 0.7.1版本,但我想我的問題是與使用easelJS的舊版本(0.5)的教程。有誰知道如何適應最新版本的easelJS?感謝

編輯2:我這個鏈接(http://www.createjs.com/Docs/EaselJS/modules/EaselJS.html)的createjs.Ticker.addEventListener("tick", handleTick);在easelJS的最新版本的利用上找到,但沒有關於如何從createjs.Ticker叫聽者的文檔,我還在尋找一個解決方案

回答

2

我認爲你正在尋找的功能是:

createjs.Ticker.removeAllEventListeners(); // Note the function name 

第二個例子應該工作,假設你是不是進行代理功能來維持的範圍。 Ticker是一個EventDispatcher,並且繼承了此處定義的所有方法:http://www.createjs.com/Docs/EaselJS/classes/EventDispatcher.html

如果您沒有對函數的引用,那麼evt.remove()是一個很好的捷徑。

一個重要的注意事項:如果您從Ticker中刪除所有事件偵聽器,您可能會不經意停止Tween的工作。 Tween在初始化時添加一個偵聽器。您最好的選擇是您完全移除聽衆的第二個選項。如果你仍然無法工作,請隨時發佈更多的代碼,我會盡力幫忙。

乾杯。

+0

感謝它有助於解決我的問題,並更好地瞭解它的工作原理。 – wytes

+0

evt.remove()通過addEventListener添加的偵聽器函數的參數evt是什麼?如果是這樣,對我而言,它不會阻止收報機收聽。我也嘗試了on/off語法,它也無法結束「tick」的聆聽。任何提示? –

+0

evt.remove和evt.off需要與'on()'方法一起使用。這個快捷方式爲事件處理程序創建了一個包裝器,它添加了附加功能。要使用'off()',你需要存儲由'on()'創建的包裝器,而不是實際的函數處理器。 – Lanny

0

我使用//交替:evt.remove();呼叫。 使用全局變量,當我將其設置爲true時,我調用evt.remove()函數。但這可能不是最好的辦法。