当前位置:软件学习 > Flash >>

flash 影片剪辑动画制作教程

下面介绍一些影片剪辑常见的属性。剩下的大家可以去查flash的帮助。(使用帮助是自学软件语言最方便的学习方法,只要按F1就出来了。)
在上一篇中其实我们已经接触到了一些。
比如myMc._x
myMc._y
其中myMc是你的影片剪辑名称。注意这里的名称不是它在库里作为元件的名称,而是它在场景里的名称,也就是createEmptyMovieClip中你为它起的那个名字,或者attachMovie中的第二个名字。
比如:
this.createEmptyMovieClip(“myMc”,1);中的myMc
或者
this.attachMovie(“myMovie”,”myBtn”,1);中的myBtn,注意不是myMovie,不知道myMovie是什么的,回去看第二篇。
当然你也可能不是使用as创建或者加载的影片剪辑,而是直接使用鼠标从库中拖过来的影片剪辑。那ok,用鼠标点中它,在属性面板中为它命名,此处命的名就是你在程序中使用它的时候要用的名称,就像你叫“小张”,小张就过来了。
_x是影片剪辑X轴坐标,_y是影片剪辑的Y轴坐标。
myMc._x=10;
myMc._y=20;
这两句代码就是把myMc放到x轴坐标为10,y轴坐标为20的位置。
自己从库中加载一个影片剪辑,把这两个数字改几次,试一下。
其他的属性同理。
_alpha是影片剪辑的透明度。
_width是影片剪辑的宽度。
_height是影片剪辑的高度。
_rotation是影片剪辑的角度。
_xscale是影片剪辑横向上的扩展度。
_yscale是影片剪辑总向上的扩展度。

没有明白这几个属性什么意思的,也按照上面的方法试一下。

好了,既然明白了这几个属性的意思,我想动画应该怎么实现,大家估计已经猜出来了,比如我想让myMc从左侧横着飞进场景的话,只需要控制_x,使它从一个负值,变成某一个正值就可以了。比如让他变到100,那它就停在x轴坐标100的位置了。
其他的也同理,比如渐现,渐隐,就是一个透明度的控制,也就是对_alpha的值的控制,变大变小则是对_width、_height、_xscale、_yscale的控制来实现,而旋转,则通过_rotation的控制来实现。

原理知道了,如何实现呢。
通过循环。
只要我们建立一种循环,使他在每次循环的过程中改变myMc的属性值就可以了。比如第一次循环,myMc._x=0;第二次循环,把这个值加1,myMc=1,以此类推,myMc=2,=3,=4,循环下去,而flash的帧频如果是25,也就是每秒钟播放25帧的话,如果我们使这段程序按帧频的频率进行播放的话,那么一秒钟以后,myMc是不是向右移动了25个像素。
原理绕来绕去说半天,其实实现起来很简单,我们只需要找到一个能够使程序以帧频的频率运行的方法就可以了,这个方法就是使用onEnterFrame。多看它几眼,记住它吧,你以后会经常用到它。
看下面的代码:

  1. myMc._x=0;

  2. onEnterFrame=function(){

  3. myMc._x= myMc._x+1;

  4. }
复制代码

第一句不用解释了,使myMc处于X轴为0的位置上。
下面
onEnterFrame=function(){}
这是flash里常见的一种形式,onEnterFrame简单解释一下,就是使{}里边的程序体,按照帧频的频率来运行。
比如上面的例子中,如果你的flash文件帧频是25,那么,myMc._x=myMc._x+1就在一秒钟内运行了25次。
最后向初学者解释一下myMc._x=myMc._x+1的意思,这句话实际上就是把右侧myMc._x+1的值赋给左侧的myMc._x.。比如第一次循环的时候,myMc._x的值是0,那么0+1以后,再赋给myMc._x,此时myMc._x变成1,循环第二次的时候,1+1再赋给myMc._x,此时myMc._x的值变成2。当然,这句程序还有个更简单的写法:myMc._x++;作用和myMc._x=myMc._x+1的作用是一样的。
那如果myMc._x=myMc._x+2该怎么写?myMc._x+2?错了,正确的简写方法是myMc._x+=2;



好了,下面运行一下上面的程序,看看什么效果,试着把前面提到的影片剪辑的其他属性换掉_x试一下,看看什么效果。

到这里我们基本上使用程序的方式使影片剪辑动起来了,只要多动脑筋,你就可以利用这些制造出丰富多彩的动画效果。

但是,有人可能也发现了问题。就是没有办法让动画停下来。这是因为如果我们不把onEnterFrame清除的话,它会一直以帧频的频率运行下去。这不仅使你的动画停不下来,而且还将一直占用着你的CPU资源。所以,当onEnterFrame的任务完成以后,一定要把它及时地结束。
使用deleteonEnterFrame可以清除正在运行的onEnterFrame。

所以上面的例子,我们可以改成下面这样。

  1. myMc._x=0;

  2. onEnterFrame=function(){

  3. myMc._x= myMc._x+1;

  4. if(myMc._x>=200){

  5. delete this.onEnterFrame;

  6. }

  7. }
补充:flash教程,动画技术
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,