flash中注册点的概念
[学习目标]: 掌握flash中注册点的概念、2个坐标系,以及与位置有关的4个属性常量_x,_y,_xmouse,_ymouse。
前2个教程给大家介绍了as的选择结构的流程控制语句,相信经过自己的练习,应该掌握了。在我们用as控制动画时,"演员"的定位对我们来说太重要了,下面我就给大家说下,关于这方面的相关知识,为后面学习MC的操作打点基础。
生活中我们要精确的确定现在所站的位置,必须知道2个参照对象:一是自身的参照点(在这里比如你的手心),二是整体参照对象(在这里是你的家),这样我们可以说你在你家的东100米,北200米处。就很容易的找到你。
对于as中我们控制的实例也是这样的,要想知道这些实例的位置,我们也要知道2点。一个是注册点,一个是所处的坐标系。
一、注册点
注册点,也可以说是"中心点"、"焦点",在编辑状态下,我们点选一个对象时,总看到个"+",其实这个就是注册点,这个注册点做什么用?就是对象自己本身的参考点,在我们需要不同的操作时,含义有点区别:
1、在控制坐标时,横纵坐标值_x,_y就是注册点 。
2、在控制旋转度时,注册点就是旋转的中心点。
3、在控制宽高以及缩放比例时,都是以注册点为中心向各个方向变化的。
可见注册点的重要了。在具体应用中,注册点的位置就是对象的坐标_x,_y,知道这点我们在编辑状态下就能很容易的确定注册点了。
二、坐标体系
flash有2个坐标体系:
1、主场景的坐标体系
任何元件放在主时间轴,他们的定位就是靠的主场景的坐标体系,坐标原点在左上角,x轴向左增加,y轴向下增加。对于任何实例而言,它的坐标,就是注册点的位置。
在as的对象中有一对属性值可以得到或者对其赋值,那就是_x,_y。比如:我们前边的例子中有个MC元件yuan_mc放在主时间轴,它的位置就是(yuan_mc._x,yuan_mc._y),这个点就是注册点在主时间轴的位置,等于这个元件的位置。
在主时间轴如果我们要定位鼠标光标的位置,可以通过2个属性值_xmouse,_ymouse来得到(这2个特殊点,是只读的)。比如我们在主时间轴想知道现在鼠标光标在什么位置,可以这样引用(_root._xmouse,_root._ymouse).很简单吧。
2、元件内的坐标体系
作为元件而言,他们有自己独立的坐标体系,就跟他们有自己的时间轴一样的,不过他们的坐标体系不同,就是原点的位置变了,在中心,其他是一样的。
如果在这个元件里面又嵌套了其他元件,我们也可以通过_x,_y这2个属性来调用的。
同样在这个体系我们也可以通过实例的_xmouse,_ymouse获取鼠标的位置,不过这个位置是对于当前元件而言的。
具体情况大家看下面的例子:
要求:演示2个坐标体系中的元件及鼠标的位置坐标
步骤:
1、新建flash文档
2、导入2个图片到库,你也可以自己画了,分别是hua,和hudie,就是一个是花篮,一个是蝴蝶。
3、新建MC元件hudie_mc。用上面导入的图片做个蝴蝶运动的MC。
4、新建MC元件hua_mc。在上面拖入花篮这个图片,然后在新建的图层中以中心为原点画个坐标系,在新建图层把hudie_mc拖入,并给MC元件hudie_mc个实例名hudie_mc,调整好位置。
5、回到主场景。
6、新建图层msg,在上面添加8个动态文本,分别对应变量名:x_hua,y_hua,x_hudie,y_hudie,x_mouse_hua,
y_mouse_hua,x_mouse_hudie,y_mouse_hudie。
7、新建图层hua把MC元件hua_mc拖入,并给实例名hua_mc。
8、新建图层xy,在左上角为原点,画坐标系。
9、新建图层ActionScript,加as如下:
//MC元件hua_mc的事件函数
hua_mc.onPress = function() {
startDrag(this, true);
//播放时拖动
};
hua_mc.onRelease = function() {
stopDrag();
//停止拖动
};
//MC元件hudie_mc的事件函数
hua_mc.hudie_mc.onMouseDown = function() {
startDrag(this, true);
};
hua_mc.hudie_mc.onMouseUp = function() {
stopDrag();
};
//取得位置坐标
hua_mc.onEnterFrame = function() {
_root.x_hua = this._x;
_root.y_hua = this._y;
_root.x_hudie = this.hudie_mc._x;
_root.y_hudie = this.hudie_mc._y;
_root.x_mouse_hua = _root._xmouse;
_root.y_mouse_hua = _root._ymouse;
_root.x_mouse_hudie = this._xmouse;
_root.y_mouse_hudie = this._ymouse;
};
测试仔细观察位置的变化情况。
说明:在个as里面用了2个方法,startDrag和stopDrag来实现元件的拖动。本次给大家介绍的内容很简单,其实就4个属性是新的_x、_y、_xmouse 和 _ymouse,这4个的使用很广泛。