KinerticJS バージョン: 4.4.3
ステージからレイヤーを削除したいときにこの問題が発生します。Layer.destroy() を呼び出すと、削除できないノードでキネティックが実行されます。エラーは発生しませんが、ループは子の長さに基づいているため、while ループは無限になります。
destroy: function (_nameSpace) {
var parent = this.getParent(),
stage = this.getStage(),
dd = Kinetic.DD,
go = Kinetic.Global;
var tempLength
// destroy children
while (this.children && this.children.length > 0) {
this.children[0].destroy();
}
}
私の場合、削除できないオブジェクトは Kinetic.Image です。ノード タイプをトレースすると、Shape が返されます (これは正しいです)。また、オブジェクトから知りたいことをすべてトレースできます...
長方形は削除されます。
私はフィドルで低レベルのテストを作成しましたが、すべてがうまく機能しているので、私のコードで何かをする必要があります。繰り返しになりますが、削除されていないノードは有効なオブジェクトですが、なぜ削除されないのでしょうか?
エラー メッセージを作成したので、毎回ブラウザがクラッシュすることはありません。
tempLength = this.children.length
this.children[0].destroy();
if (tempLength == this.children.length) {
throw 'item not removed ' + this.children[0].getNodeType();
}
ご覧のとおり、アイテムを破棄した直後に、子の長さが変化したかどうかを確認するので、他のコードが干渉していないと推測できます。たとえば、ノードを破棄するときにノードを追加します。
私はここで行き止まりです。誰かが私を助けてくれたり、私を何かの方向に向けてくれることを願っています. とにかく、読んでくれてありがとう:)