2013-12-21 4 views
0

Итак, у меня есть приложение, которое масштабируется, масштабируя каждый слой и корректируя положение слоев. Тем не менее, у меня есть несколько кругов (и изображений) на некоторых слоях, которые мне нужно поддерживать одинаково независимо от уровня масштабирования (т. Е. Независимо от масштаба слоя).KineticJS - Изменение изображений/фигур после масштабирования

Есть ли способ установить масштаб каждой фигуры/изображения в слое без итерации? Я посмотрел на использование группы, но универсального способа установить универсальный масштаб не существует.

Если нет, был бы эффективный способ сделать это без итерации?

ответ

0

Поместите объекты без масштабирования в отдельную группу, а затем перемасштабируйте (и произвольно перепозиционируйте) эту группу на основе коэффициента масштабирования слоя групп.

Демо: http://jsfiddle.net/m1erickson/2X7eK/

var scaleFactor=2; 

// scale the entire layer by 2X 

layer.setScale(scaleFactor); 

// unscale just the noGroup back to original size 

noGroup.setScale(1/scaleFactor); 

// reposition just the noGroup back to it's original position 
// before the layer was resized 

noGroup.setPosition(noGroup.getX()/scaleFactor,noGroup.getY()/scaleFactor); 
+0

Поправьте меня, если я ошибаюсь, но я считаю, ваше решение не выполняет масштабирование, а он воспроизводит то же изображение сцены без увеличения масштабированием как слой и группы (можно думать о группе как о подслое), которые противодействуют друг другу. Что мне нужно, когда пользователь приближается, расстояние между фигурами/изображениями увеличивается, однако их размеры остаются неизменными (при более общем масштабировании увеличиваются как размер формы/изображения, так и расстояние). – tenble

+0

Предполагая, что у вас есть 2 вида объектов на слое (1), некоторые из которых желают масштабироваться, и (2) некоторые из них желают не масштабировать. В этом случае все элементы на слое будут масштабированы, но noScaleGroup будет немасштабирован до исходного размера. Разве это не то, что вы хотели? – markE

+0

Извините, я должен был быть более ясным. Мне нужна операция масштабирования, которая работает точно так же, как обычный зум (увеличивает размер и расстояние между фигурами), за исключением того, что размеры фигур должны быть фиксированной константой независимо от уровня масштабирования (скажем, 25x25). Масштабирование группы не выполняет эту работу, так как уменьшает расстояние между фигурами. – tenble

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