Actionscript 3 矩形坐标空间的帮助
如果我有一个矩形的简单类:Actionscript 3 矩形坐标空间的帮助,actionscript-3,coordinates,Actionscript 3,Coordinates,如果我有一个矩形的简单类: package { import flash.display.Sprite; import flash.geom.Rectangle; public class Spot extends Sprite { private var __rect:Rectangle; public function Spot() { init(); } private function init():void {
package
{
import flash.display.Sprite;
import flash.geom.Rectangle;
public class Spot extends Sprite
{
private var __rect:Rectangle;
public function Spot()
{
init();
}
private function init():void
{
__rect = this.getRect(this);
}
public function get rect():Rectangle{
return __rect;
}
}
}
我在舞台上制作了这个类的一个实例的动画,并试图追踪它的坐标:
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.geom.Point;
public class RectangleTest extends Sprite
{
public var spot:Spot = new Spot();
public function RectangleTest()
{
init();
}
private function init():void
{
addEventListener(Event.ENTER_FRAME, dynamicSpotTrace, false, 0, true);
}
private function dynamicSpotTrace(e:Event):void
{
trace(spot.rect.x, spot.rect.y, spot.rect.width, spot.rect.height);
}
}
}
输出跟踪:
0 0 65 65
一遍又一遍(因为Spot的注册点为0,0)…我如何重写它,以便在每一帧获得Spot实例的新坐标(因为Spot实际上是在屏幕上移动的??)getRect的参数是
targetCoordinateSpace
,即矩形将在显示对象的坐标空间中表示。因此,我想您需要传递一个指向要在哪个坐标系上获得矩形的显示对象的引用,而不是此
,它是点
的父显示对象。传递此
意味着点
将返回其自身局部坐标系中的矩形,该矩形始终以(0,0)为原点。如果希望在RectangleTest
坐标系中获得结果,则可以在Spot
构造函数中传递该结果的引用,并将其用作getRect
的参数
注意:我确实没有亲自测试过,但这是我在阅读手册后理解的 记住taskinoor的答案,你可以做得容易得多
private function dynamicSpotTrace(e:Event):void
{
var rect:Rectangle = spot.getRect(stage);
trace(rect);
}
您在动画中实际针对的是哪个元素?我的意思是,如果你移动的是rect而不是spot,spot只是随着rect移动,而不是真正的移动本身。哦,是的,我移动的是spot…我希望rect会随着spot跟踪。。。