如何从actionscript获取局部符号坐标?

时间:2010-08-18 18:52:19

标签: flash actionscript-3

我有一个最初在[-100,-100]坐标(左上角)创建的符号。现在我将这个符号的实例放在[0,0]阶段坐标的舞台上(通过在IDE中用鼠标拖动它)。有了这个实例,我还能以某种方式确定动作脚本的原始[-100,-100]位置吗? (myInstance.x返回阶段坐标)。

我做了什么:

  • 在创建期间位于-100,-100坐标的库中创建新符号
  • 在舞台上以不同的坐标
  • 放置此符号的实例 actions文件中的
  • 尝试从实例对象获取原始-100值,如:

this.myInstance.x(只返回舞台坐标)

为什么我这样做:

我正在尝试将此movieclip放入BitmapData:

var myClip:MovieClip = this.myInstance;
var bmp:BitmapData = new BitmapData(myClip.width, myClip.height);
bmp.draw(myClip);

问题是BitmapData看起来只占用位于正坐标的剪辑的一部分。为了克服这个问题,我需要提供具有相应偏移的变换矩阵:

var m:Matrix = new Matrix();
m.tx = 100;
m.ty = 100;
bmp.draw(myClip, m);

如果我知道原始符号坐标在舞台上被丢弃之前,我就可以计算出这个偏移量。

希望这是有道理的。

4 个答案:

答案 0 :(得分:5)

// get bounds including strokes
// traces (x=-105, y=-105, w=110, h=110)
trace(myInstance.getBounds(myInstance));

// get bounds excluding strokes
// traces (x=-100, y=-100, w=100, h=100)
trace(myInstance.getRect(myInstance));

答案 1 :(得分:0)

我想我明白你在说什么。如果你的符号里面有一个名字对象,我想你可以做到这一点。例如,如果您的符号在(x,y)处有一个名为myImage的图像。我相信你可以使用mySymbol.myImage.x或mySymbol.myImage.y。这是你的意思吗?

答案 2 :(得分:0)

通过收听Point对象中的 Event.ADDED_TO_STAGE ,您的对象可以在移动到舞台之前存储其位置。

答案 3 :(得分:0)

感谢您的澄清,现在更有意义了!

您要问的是如何找到MovieClip内部图形的坐标是否正确?为此,您必须将图形存储在另一个符号中。因此,只需双击符号并选择其中的所有图形。按F8键使其成为另一个符号并为其指定一个实例名称(例如bar)。基本上你正在做的是在MovieClip中制作一个MovieClip。

现在当你向舞台添加一个符号实例(比如它的名字是foo)时,只需要执行foo.bar.x或foo.bar.y,你就会看到图形位置。