Я столкнулся в течение последних нескольких дней с очень странной проблемой с KineticJS и моим веб-приложением:KineticJS: image.destroy() не разрушает Kinetic.Image и group.destroy() вызывает бесконечный цикл
В целом мое приложение состоит из нескольких «страниц», которые представлены Kinetic.Group
с. Все группы, кроме одного, смещены, что означает, что они не видны. Невидимые группы добавляются к отдельному Kinetic.Layer
временно (для кеширования и т. Д.), И единственная видимая страница добавляется к другой Kinetic.Layer
, чтобы сделать ее интерактивной.
Все страницы (или Kinetic.Group
s) хранятся в массиве (поскольку нет фиксированной суммы) и доступны как: activelayer.add(pages[1]);
.
Все в порядке до сих пор, но когда я пытаюсь уничтожить Kinetic.Shape
, как изображение, оно не уничтожает изображение, а это значит, что оно все еще там, видимо и интерактивно. На следующем шаге я хотел уничтожить весь «временный» Kinetic.Layer
, что привело к бесконечному циклу и вызвало сбой моего браузера.
До сих пор я исследовал destroy
-функции KineticJS и выяснили, что go._removeID(this.getId());
и go._removeName(this.getName(), this.getId());
функции получают только undefined
значения.
Разрушающие слои, не имеющие отношения к указанным выше страницам, работают без проблем.
Любая помощь очень ценится.
Вы нарисовали слой после разрушения объекта? Это распространенная ошибка, которая заставляет ее «казаться», как будто ничего не происходит. Кроме того, вы установили имя и/или идентификатор для предметов, которые вы уничтожаете? Возможно, поэтому они не определены. – projeqht
Спасибо за ваш ответ. Да, слой перерисовывается после уничтожения объекта и нет, я не задавал никаких имен и/или ID, но это не должно быть проблемой из-за внутреннего '_id' KineticJS каждого объекта, который используется для «поиска», правильную форму, уничтожая ее. Кроме того, если я уничтожу форму, KineticJS возвращает объект, который должен иметь значение «undefined», поскольку оно было уничтожено. В моем случае он возвращает форму со всеми ее свойствами, такими как 'destroy'-process никогда не выполнялся. – irie
Мое следующее предположение: ваши Kinetic.Shapes не хранятся в вашем массиве activeLayer должным образом. Вы пробовали уничтожить форму, обратившись к ней ** ID ** напрямую? Получаете ли вы те же результаты? Как вы ссылаетесь на свои Кинетические объекты, которые нужно уничтожить? – projeqht