Я использую FlashDevelop, actioncript 3 и графическую сборку fxg с Illustrator (экспортируется как fxg 2.0).Координаты не меняют перетаскивание масштабированной графики fxg
Я импортирую прямоугольник прямоугольника fxg с Illustrator, после чего я его перетаскиваю, когда вы клик на нем, поэтому его координаты меняются. Это работает, если масштаб прямоугольника равен 1 (это означает: нет масштаба). Но если я изменю масштаб (например, fxgRect.scaleX = fxgRect.scaleY = 0.5;), вы можете перетащить его, но его координаты не меняются! И это заставляет меня сходить с ума, потому что спрайт меняет положение, но если вы спросите его координаты, они не меняются !! И я установил fxgRect.mouseChildren = false;
, поэтому я уверен переместить спрайт fxgRect, а не что-то внутри него. (Это всего лишь пример, моя цель - построить сложную графику с иллюстратором и использовать ее в FlashDevelop).
Заранее благодарим вас за помощь.
Это код, предназначенный для проверки этой проблемы. Чтобы использовать этот пример, вам нужно создать прямоугольник fxg (fxgrectangle.fxg) и поместить его в ту же папку класса SimpleDragFxg.as.
import flash.display.*;
import flash.events.*;
import fxgrectangle;
public class SimpleDragFxg extends Sprite
{
public var fxgRect:Sprite = new fxgrectangle(); // make an istance of fxgRect
public function SimpleDragFxg()
{
//----------------------------------------------------------
addChild(fxgRect);
fxgRect.name = "FXGrect";
fxgRect.x = fxgRect.y = 50;
fxgRect.mouseChildren = false;
fxgRect.scaleX = fxgRect.scaleY = 0.5; //<<< this makes the problem
trace ("I'm ", this.name, "and I contain ", this.fxgRect.name, "which contains ", fxgRect.getChildAt(0).name);
fxgRect.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
//--------------------------------------------------------------
}
private function onMouseDown (e:MouseEvent):void
{
trace ("e.target: ", e.target.name);
if (DisplayObject(e.target).name == "FXGrect")
{
trace ("FXGrect position BEFORE drag: ", fxgRect.x, fxgRect.y);
Sprite(e.target).startDrag();
stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
}
}
private function onMouseUp (e:MouseEvent):void
{
fxgRect.stopDrag();
stage.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp);
if (DisplayObject(e.target).name == "FXGrect")
{
trace ("FXGrect position AFTER drag: ", fxgRect.x, fxgRect.y);
}
}
}
Вы можете не масштабируются перетаскивается элемент? Я имею в виду, что не применяйте преобразование перетаскиваемого элемента вместо контейнера, который будет перетаскиваться, и контент, который будет иметь преобразование. Более того вы можете отслеживать (e.target); в onMouseDown и onMouseUp? Может быть, вы перетаскиваете не то, что думаете, что перетаскиваете :) :) :) –
Да, возможно, я мог бы использовать не масштабируемые элементы, но когда я нахожу проблему, я пытаюсь ее решить. Спасибо, чтобы комментировать мой вопрос. – AntonioG