Проверьте, какой 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();