转一好贴http://www.flashempire.net/showthread.php?s=&threadid=172285&highlight=localTo
同时把内容附上,怕丢了.
local(本地)坐标与 global(全局)坐标的转换:
所用函数:
localToGlobal();
globalToLocal();
帮助上有具体说明的,用到的朋友可以查阅.
看来是一部分人的盲点啦,再补充些细节
1,关于X,Y坐标
假设舞台上有个方形的MC,选中它,MX的属性面板上有W,H,X,Y.等几个值,W,H分别是宽度和高度这都知道了,但X,Y是不是它的X,Y坐标,即_x,_y?注意,不是的,请仔细看看上面的基本概念,属性面板上的X,Y值是MC左上角的坐标!,_x,_y是MC注册点的坐标,默认情况下,Symbol(当然包括MC),注册点是在它的几何中心的.所以,要记牢,X,Y和_x,_y是不同的.
2,关于_xscale和_yscale的补充
我们细读这句从影片剪辑的注册点开始应用,我们编写AS来随着鼠标的点击渐次放大主场景中的MC,显然,是从中心开始向外放大的,在放大的过程中,MC的坐标也就是它的几何中心的坐标不变,但其他各点的坐标都是变化的!
3,本部分对应上面第三部分".
接2,有意思的是如果你在mc1的内部再放一个MC:mc2,用trace()语句输出它的坐标,会发现它的_x,_y值始终不变,我靠.为什么是这样的?明明看到它随着放大而移动的吗?不要急,看这句设置影片 x 坐标的整数,该坐标相对于父级影片剪辑的本地坐标。,因为_x,_y是相对于父级影片来算的,mc1和它里面的mc2同步放大,相对于mc1来说,mc2的坐标是不变的.再用上面附录中的函数localToGlobal();(示例代码:
pos=new Object();
pos.x=_root.mc1.mc2._x;
pos.y=_root.mc1.mc2._y;//如果在此处trace();得出的mc2的坐标是不变的;
localToGlobal(pos);
trace(pos.x);
trace(pos.y);//此时输出的是经过转换后的mc2的全局(_global)坐标,这个值是随着放大的进行而变动的