TransformGestureEvent имеет свойства localX
и localY
, которые содержат координаты центра между двумя пальцами.
Хотя вы не можете масштабировать объект из нецентральной точки, не перемещая его, поэтому только с помощью масштабирования можно перемещать даже «неподвижный» объект.Чтобы жест выглядел естественно, сначала нужно переместить спрайт на разницу между позициями, а затем увеличить его из определенной точки.
Вам понадобятся oldLocalX
и oldLocalY
, чтобы сохранить старые координаты.Установите эти переменные на текущий localX / localY, когда gesture.phase == GesturePhase.BEGIN
.После этого переместите ваш спрайт на новую дельту.
Чтобы увеличить объект из определенной точки, сделайте следующее:
var matrix:Matrix = this.transform.matrix;
matrix.translate(-event.localX, -event.localY);
matrix.scale(event.scaleX, event.scaleY);
matrix.translate(event.localX, event.localY);
this.transform.matrix = matrix;