2013-08-20 27 views
0

我最近幾天面對KineticJS和我的Web應用程序時出現了一個非常奇怪的問題:KineticJS:image.destroy()不會破壞Kinetic.Image和group.destroy()導致無限循環

一般而言,我的應用程序由幾個「頁」組成,這些「頁」由Kinetic.Group s表示。除了一個組之外的所有組都是偏移量,這意味着不可見。不可見羣組全部臨時添加到單獨的Kinetic.Layer(用於緩存等),唯一可見的頁面被添加到另一個Kinetic.Layer以使其交互。

所有的頁面(或Kinetic.Group s)都存儲在一個數組中(因爲沒有固定數量)並且按如下方式訪問:activelayer.add(pages[1]);

目前爲止一切都很好,但是當我試圖銷燬一個Kinetic.Shape就像一個圖像,它不會破壞圖像,這意味着它仍然存在,可見和交互。在下一步中,我想銷燬整個「臨時」Kinetic.Layer,導致無限循環並導致瀏覽器崩潰。

到目前爲止,我已經調查了KineticJS的destroy函數,並發現,go._removeID(this.getId());go._removeName(this.getName(), this.getId());函數僅接收undefined值。

銷燬與上述頁面無關的圖層不會造成任何問題。

任何形式的幫助,非常感謝。

+0

您是否在銷燬對象之後繪製圖層?這是一個常見的錯誤,它使得它「看起來」像什麼都沒有發生。另外,您是否爲您正在銷燬的物品設置了名稱和/或ID?這可能是他們未定義的原因。 – projeqht

+0

感謝您的回覆。是的,圖層在銷燬對象後重繪,不,我沒有設置任何名稱和或ID,但這不應該是一個問題,因爲每個對象的KineticJS內部'_id'用於「查找」正確的形狀,同時摧毀它。另外,如果我摧毀一個形狀,KineticJS將返回該對象,該對象應該具有「undefined」值,因爲它已被銷燬。在我的情況下,它返回形狀的所有屬性,如'destroy'-進程從未執行。 – irie

+0

我的下一個猜測是你的Kinetic.Shapes沒有正確地存儲到你的activeLayer數組中。你是否試圖通過直接訪問** ID **來銷燬形狀?你有相同的結果嗎?你如何引用你的動力學對象被銷燬? – projeqht

回答

0

您可能已經多次添加圖層。