as3,中显示对象的[color=red]localToGlobal[/color]与[color=red]globalToLocal[/color]在as3语言参考上说明不是很详细:
2方法的作用是:将坐标在 局部坐标系与全局坐标系 进行转换.
由于元件的坐标系是自身的容器,所以必须用元件的parent来调用
下面分析下:
要获取s2的舞台坐标(全局坐标系),则必须使用s2的parent的localToGlobal方法.
现在打印的坐标是:s2在舞台坐标系中的坐标.
反之,要获取舞台上某点在s2坐标空间中的坐标,也必须使用s2.parent的globalToLocal方法.
现在打印的坐标是:舞台上的pt点在s2所在坐标系(就是它的容器)的坐标
便于记忆的话,则需要记住localToGlobal与globalToLocal都需要使用显示对象的parent来调用,因为显示对象的坐标空间是相对于它自身的容器来说的.
2方法的作用是:将坐标在 局部坐标系与全局坐标系 进行转换.
由于元件的坐标系是自身的容器,所以必须用元件的parent来调用
下面分析下:
var s:Sprite = new Sprite();
s.x = 100;
s.y = 100;
addChild(s);
var s1:Sprite = new Sprite();
s1.x = 100;
s1.y = 100;
s.addChild(s1);
var s2:Sprite = new Sprite();
s2.x = 100;
s2.y = 100;
s1.addChild(s2);
要获取s2的舞台坐标(全局坐标系),则必须使用s2的parent的localToGlobal方法.
var pt:Point = s2.parent.localToGlobal(new Point(s2.x,s2.y));
trace(pt);
现在打印的坐标是:s2在舞台坐标系中的坐标.
反之,要获取舞台上某点在s2坐标空间中的坐标,也必须使用s2.parent的globalToLocal方法.
trace(s2.parent.globalToLocal(pt));
现在打印的坐标是:舞台上的pt点在s2所在坐标系(就是它的容器)的坐标
便于记忆的话,则需要记住localToGlobal与globalToLocal都需要使用显示对象的parent来调用,因为显示对象的坐标空间是相对于它自身的容器来说的.