Проверьте, какой Kinetic.Layer находится на вершине

У меня есть один этап и несколько слоев, которые накладываются. Я ссылаюсь на каждый слой с помощью кнопки. Я должен позволить пользователю рисовать на этих нескольких слоях всякий раз, когда он нажимает на одну кнопку, и переключаться между ними. Как я могу проверить, какой слой поверх других?

Я старался layer.getAbsoluteZIndex() но это не очевидно. Есть ли метод, который на самом деле возвращает истину / ложь, например, может быть, как .isOnTop()?

РЕДАКТИРОВАТЬ:

Ну, я должен был реализовать это самостоятельно, и это было хорошо, я думаю. Самым простым решением было добавить логический атрибут isOnTop в определении каждого слоя и сделать соответствующие тесты и обработки.

1 ответ

Решение

Сначала добавьте новый метод на Kinetic.Stage:

  Kinetic.Stage.prototype.getTopLayer=function(){
      var layers=stage.find('Layer');
      var topLayerIndex=-100;
      var topLayer;
      for(var i=0;i<layers.length;i++){
          var index=layers[i].getAbsoluteZIndex();
          if(index>topLayerIndex){
              topLayerIndex=index;
              topLayer=layers[i];
          }        
      }
      return(topLayer);
  }

Тогда вы можете получить слой с самым высоким z-индексом, например так:

  var myTopLayer = stage.getTopLayer();
Другие вопросы по тегам