首先要明确下,舞台也是一个movieClip, 他的坐标原点在左上角(0,0) 其他的影片剪辑坐标是注册点在舞台的位置, (注册点:就是剪辑内部的十字符号)
本文主要讲解嵌套影片剪辑的坐标, 当一个mc(影片剪辑)名为:b_mc,在另一个名为a_mc的剪辑中, 如图: b_mc在a_mc内部,b_mc的坐标是 根据自身的_x _y和父剪辑a_mc的坐标决定的。 所有子影片剪辑的_x _y数值,永远都是本地位置,不会随着父剪辑的移动而改变。
解决的方法: 1:计算父剪辑的在全局位置的及子影片剪辑的本地位置 如舞台里有a,a里面有b 获取b的坐标: 1 trace(a._x+a.b._x)
2:localToGlobal()
1 var op0:Object=new Object()//建立一个点对象
2 op0.x=a.b._x//注意op0.x 不是_x 3 op0.y=a.b._y//注意op0.y 不是_y 4 //点对象必须好友x y两个属性,必不可少 5 a.localToGlobal(op0) 6 trace(op0.x+" b");
综合的例子: 1:在舞台上 画一个 100*70的蓝色矩形,选中,按F8转为mc 2:对该剪辑的实例名称:a 3:在a中绘制一个60*40的粉色矩形,选中,按F8转为mc 4:对该剪辑的实例名称:b 5:在b中绘制一个40*30的黄色色矩形,选中,按F8转为mc 6:对该剪辑的实例名称:c 在主时间轴上新建一个层,名为as 输入代码:
1stop();
2a.onPress = function() { 3 this.startDrag(); 4}; 5a.onRelease = function() { 6 this.stopDrag() 7 //----------------------------第一个点对象 记录b的坐标 8 var op0:Object=new Object() 9 op0.x=this.b._x 10 op0.y=this.b._y 11 this.localToGlobal(op0) 12 trace(op0.x+" b"); 13 //----------------------------第二个点对象 记录c的坐标 14 var op1:Object=new Object() 15 op1.x=this.b.c._x 16 op1.y=this.b.c._y 17 this.b.localToGlobal(op1) 18 trace(op1.x+" c"); 19}; 20 |
|