FLASH登记点与中心点(转)

FLASH注册点与中心点(转)

http://space.flash8.net/space/?592228/viewspace-363591.html

 

变形工具和AS代码实现缩放和旋转效果时,依据的基准点是不同的,前者以中心点为基准,后者以注册点为基准。 改变MC的_rotation,MC内部的座标系会相应的进行旋转. 

元件编辑界面中的小十字,表示注册点。 
注册点是注册点所在场景的座标原点(0,0)。 
元件的座标是以它的外边框左上角所在位置来表示的。 

元件中的小圆圈表示中心点。 
形状的中心点在选中状态下可以进行移动,放弃选中则恢复到几何中心。 

窗口操作中的测试结果: 

所有的旋转和缩放都是围绕着相应的中心点进行的。 

元件在拖入某场景后,形成中心点,默认情况下按钮的中心点与注册点位置重合,MC和图形的中心点位于该元件的几何中心。 

元件的中心点可以通过任意变形工具进行改变,但注册点无法从外部改变。 

元件发生旋转后由水平线与垂直线构成的最大外框的左上角成为元件在场景中的新座标。 
元件发生缩放时,是以中心点为基准向外进行的,因此,距中心点越远,元件缩放后在场景中的座标值变化就越多。 

元件在嵌套放置的时候,中心点的变化如同将该元件拖入主场景中:默认情况下 按钮的中心点与注册点位置重合,MC和图形的中心点位于该元件的几何中心。 

MC的中心点在外部改动后,无论MC内部是否还有其它元件,或是增删 MC 内部的元件,中心点与注册点的座标关系都将保持不变。 

信息窗口,仅用于显示座标位置,选中左上角显示的是当前对象的座标,选中中间,显示的是对象中心点的座标。该显示信息与注册点位置无关。 
将目标转换为元件时,窗口中可以设置默认注册点的相对位置。该处的9方格显示与信息窗口中的9方格显示是没有关系的。 

AS代码操作的测试结果: 

通过改变对象的 _xscale _yscale 及 _rotation 而实现的变形效果都是以目标对象的注册点为基准点的。 

AS代码生成的空影片剪集的注册点总是位于其内部的左上角(0,0)。 

一个MC只有一个唯一的注册,在编辑状态下,点中MC中内嵌的MC,显示出来的另一组注册点及中心点,是下一级MC(也就是内嵌MC的注册点、中心点)与当前MC无关。 

剩余问题: 

怎样获取注册点和中心点? 

如果是几何中心,并且未做改动,那么: 
中心点座标为 {(this._x+ this._width/2), (this._y+this._height/2)} 
AS代码产生的动作与中心点无关,因此可以忽略该位置点。 

注册点的计算可以通过同时放大对象的 _xscale 和 _yscale ,计算放大后的 _x _y 可以得到注册点在当前场景的座标。 
计算过程如下: 
x1 = this._x; 
y1 = this._y; 
this._xscale = 200; 
this._yscale = 200; 
x2 = this._x; 
y2 = this._y; 
regPtX = x1 - (x2 - x1); //因为是等比放大了两倍,这里计算就很简单 
regPtY = y1 - (y2 - y1); 

在实际的测试中又可以发现, 当MC进行旋转(改变_rotation)后, MC内部的座标系也同时会发生旋转,于是内置元件的注册点座标相对于MC的基准点来说总是不变的.