醒着☆☆

H5 Laya Native Game

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: :: 管理 ::

首先要明确下,舞台也是一个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技术博客欢迎你

 

posted on 2008-09-02 09:36  醒着/☆☆  阅读(1094)  评论(0编辑  收藏  举报