首先要明確下,舞台也是一個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
源檔案下載
naiking的flash技術部落格歡迎你