我正在使用FlashDevelop,actionscript 3和fxg图形构建与Illustrator(导出为fxg 2.0)。
我使用Illustrator导入一个fxg矩形构建,然后当你克隆它时我将它设置为可拖动,因此它的坐标会改变。如果矩形比例为1(这意味着:无比例),则此方法有效。
但是,如果我改变它的比例(例如fxgRect.scaleX = fxgRect.scaleY = 0.5;)你可以拖动它但它的坐标不会改变!!这让我很疯狂,因为精灵改变了位置,但是如果你问它的坐标,他们就不会改变!
然后我设置fxgRect.mouseChildren = false;
所以我肯定会移动精灵fxgRect而不是内部的东西。
(这只是一个例子,我的目标是用Illustrator构建复杂的图形并在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);
}
}
}
答案 0 :(得分:1)
尝试
public var fxgRect:Sprite = new Sprite();
fxgRect.addChild(new fxgrectangle());