2013-08-20 3 views
0

Я столкнулся в течение последних нескольких дней с очень странной проблемой с 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 значения.

Разрушающие слои, не имеющие отношения к указанным выше страницам, работают без проблем.

Любая помощь очень ценится.

+0

Вы нарисовали слой после разрушения объекта? Это распространенная ошибка, которая заставляет ее «казаться», как будто ничего не происходит. Кроме того, вы установили имя и/или идентификатор для предметов, которые вы уничтожаете? Возможно, поэтому они не определены. – projeqht

+0

Спасибо за ваш ответ. Да, слой перерисовывается после уничтожения объекта и нет, я не задавал никаких имен и/или ID, но это не должно быть проблемой из-за внутреннего '_id' KineticJS каждого объекта, который используется для «поиска», правильную форму, уничтожая ее. Кроме того, если я уничтожу форму, KineticJS возвращает объект, который должен иметь значение «undefined», поскольку оно было уничтожено. В моем случае он возвращает форму со всеми ее свойствами, такими как 'destroy'-process никогда не выполнялся. – irie

+0

Мое следующее предположение: ваши Kinetic.Shapes не хранятся в вашем массиве activeLayer должным образом. Вы пробовали уничтожить форму, обратившись к ней ** ID ** напрямую? Получаете ли вы те же результаты? Как вы ссылаетесь на свои Кинетические объекты, которые нужно уничтожить? – projeqht

ответ

0

Возможно, вы добавили слой несколько раз.

Смежные вопросы