Установить z-индекс фигур в Kinetic.Group

Как мне установить z-index для фигур, которые я добавляю в Kinetic.Group? Моя группа содержит прямоугольники и изображения. Я хочу сделать это:

rectangle.setZIndex(1); 
image.setZIndex(2);

Это дает мне следующую ошибку: Uncaught TypeError: Невозможно прочитать свойство 'children' из undefined.

Я использую перетаскивание, а затем группирую объекты вместе. Я хочу, чтобы изображения были на вершине прямоугольника. moveToTop() Метод выдает ошибки, когда я вызываю его внутри моего кода.

РЕДАКТИРОВАТЬ: http://jsfiddle.net/Dcevd/. Попробуйте этот вариант использования: перетащите и отпустите две линии, затем перетащите изображение и поместите его на первый прямоугольник, затем переместите его на второй (когда вы делаете это наоборот, это работает). он движется к вершине только на драгенде.

1 ответ

Решение

Ответ на ваше редактирование

Ты звонишь moveToTop() на ребенка из группы, поэтому он будет только помещать изображение в оп этой конкретной группы. Как только вы поместите второй прямоугольник в правую сцену, он получит более высокий z-индекс, чем первый, который вы поместили, и, следовательно, будет "поверх" первого прямоугольника (включая его изображения). Чтобы решить эту проблему, я установил, что родительский элемент изображения (группа) переместился в начало на dragstart, это исправляет это для меня:

cloneImg.on('dragstart', function(){
    this.startX=this.x();
    this.startY=this.y();
    this.getParent().moveToTop();
});

Смотрите также скрипку: http://jsfiddle.net/Dcevd/3/

PS. Если вы посмотрите документы KineticJS, то увидите, что setZIndex доступен на изображениях Kinetic (как и во всех других формах). http://kineticjs.com/docs/Kinetic.Image.html

Другие вопросы по тегам