Flash可以做出千变万化,多姿多彩的动画效果,其中很大一部分都是由控制电影剪辑(MC)的属性来达到的。在Flash MX 2004的【动作】面板中,属性被放在各个相应的类中,不像以前的版本,把各个类的属性统一地放在一起。如果在编程时需要使用MC的属性,你可以在【动作】面板的【内置类】|【影片】|【MovieClip】类别里找到。
1.MC属性控制
(1)MC属性简介
在Flash MX 2004中,MC的属性有30余种,我们在这里介绍部分常用的,最具代表性的属性。
_alpha:电影剪辑实例的透明度。有效值为 0(完全透明)到100(完全不透明)。默认值为100。你可以通过对MC的_alpha属性在0到100之间变化的控制,制作出或明或暗或模糊的效果来。
_rotation:电影剪辑的旋转角度(以度为单位)。从0到180的值表示顺时针旋转,从0到-180的值表示逆时针旋转。不属于上述范围的值将与360相加或相减以得到该范围内的值。例如:语句my_mc._rotation=450
与my_mc._rotation=90
相同。
_visible:确定电景剪辑的可见性,当MC的_visible的值是True(或者为1)时,MC为可见;当MC的_visible的值是false(或者为0)时,MC为不可见。
_height:影片剪辑的高度(以像素为单位)。
_width:影片剪辑的宽度(以像素为单位)。
_xscale:影片剪辑的水平缩放比例。
_yscale:影片剪辑的垂直缩放比例。
当_xscale和_yscale的值在0~100之间时,是缩小影片剪辑为原影片剪辑的百分数;当_xscale和_yscale的值大于100时,是放大原影片剪辑;当_xscale或_yscale为负时,水平或垂直翻转原影片剪辑并进行缩放。
不要把影片剪辑的高度与垂直缩放比例混淆,也不要把影片剪辑的宽度与水平缩放比例混为一谈,例如:
MC._width=50//表示把MC的宽设置为50像素;
MC._xscale=50//表示把MC的水平宽度设置为原来水平宽度的50%。
_x:影片剪辑的x坐标(整数)。
_y:电景剪辑的y坐标(整数)。
注意:如果影片剪辑在主时间轴中,则其坐标系统将舞台的左上角作为 (0, 0),向右和向下逐渐增加。如果影片剪辑在其它影片剪辑的时间轴中,则以其中心位置为(0,0),向右和向下为正,并逐渐增加。向左和向上为负,并逐渐减小。
(2)getProperty()和setProperty()命令
在前面我们介绍了部分常用的MC的属性,那么到底怎么去实现对其属性的控制呢?常用的命令是setProperty()和getProperty(),即设置属性命令和取得属性的命令。在Flash MX 2004中,这两个命令在【动作】面板中【全局函数】|【影片剪辑控制】类别下。
setProperty()命令用来设置MC的属性,它的一般使用形式为:
setProperty(目标,属性,值);
命令中有三个参数:
目标:就是要控制(设置)属性的MC的实例名,注意包括MC的位置(路径)。
属性:即要控制的何种属性,例如透明度、可见性、放大比例等。
值:属性对应的值,包括数值、布尔值等。
例如:
setProperty(“_root.mc.mc1”,_visible, false);//表示把影片mc下一个实例名为mc1的影片设置为不可见。
setProperty("_root.dm",_rotation,30);//表示要使实例名叫dm的影片剪辑转动30度。
getProperty()命令用来获取MC的属性,它的一般使用形式为:
getProperty(目标,属性);
命令中有两个参数:
目标:被取属性的MC实例的名称;
属性:要取得的MC的属性。
例如:
mx= getProperty(“_root.mc.mc1”,_x);//取得影片mc下一个实例名为mc1的影片的横坐标,并把它交给变量mx;
setProperty("_root.dm1",_y, getProperty("_root.dm0",_y));//表示设置影片dm1的纵坐标为影片dm0的纵坐标。或者说,取得影片dm0的纵坐标的值,把这个值作为影片dm1的纵坐标的值。这种方法经常用在动态地为影片设置属性。
(3)使用点语法存取属性值
除了用setProperty()和getProperty()命令设置和取得MC的属性外,如果你的英语不错,ActionScript运用也比较熟练,那么你也可以用“.”点语法来设置或取得MC的属性,有时候会觉得很方便。点语句的用法的一般形式为:
影片剪辑名称.属性=属性值。
影片剪辑名称当然包括它的路径(后面会比较详细地介绍路径的概念)。下面我们以前面的例子来说明。
setProperty(“_root.mc.mc1”,_visible, false);
可以写成:
_root.mc.mc1._visible=false;
setProperty("_root.dm",_rotation,30);
可以写成:
_root.dm._rotation=30;
mx= getProperty(“_root.mc.mc1”,_x);
可以写成:
mx= _root.mc.mc1._x;
setProperty("_root.dm1",_y, getProperty("_root.dm0",_y));
可以改写成两句:
my=_root.dm0._y;
_root.dm1._y=my;
是不是有的情况下点语法更精练写呢?