河南师大数学学院黄荧Tel:13523234851Email:ying8501@163.comFLASHCS5课件制作初步FLASHCS5课件制作初步----多媒体课件制作第6章Flash动作脚本--ActionScript•ActionScript(简称为as)是Flash自带的编程语言。•ActionScript和Java、C++一样,是面向对象语言。As3.0是更纯粹的面向对象语言,更复杂。•ActionScript中最核心、最元老的类就是Object类。Object类是根类,其余所有一切数据类型都是它的子类和子类的衍生类。•ActionScript中所有的数据都是对象。一、认识“动作”面板:----按F9打开面板动作工具箱脚本导航器脚本工具栏脚本编辑器状态栏二、几个控制时间轴的常用命令函数功能play()开始动画播放stop()停止动画播放gotoAndPlay([scene,]frame)跳至scene场景(省略表示当前场景)的frame帧并播放gotoAndStop([scene,]frame)跳至scene场景(省略表示当前场景)的frame帧并停止prevFrame()跳至并停止在前一帧nextFrame()跳至并停止在下一帧prevScene()跳至并停止在前一场景的第1帧nextScene()跳至并停止在下一场景的第1帧stopAllSounds()再不停止播放头的情况下停止SWF文件中正在播放的所有声音三、在Flash中添加动作脚本的方式•添加在“关键帧”上的动作脚本,称为帧脚本。•添加在“对象”(如,按钮或影片剪辑)上的动作脚本,称为对象脚本。•注意:•“图形”元件上是不能添加动作脚本的。•ActionScript3.0更是只允许帧脚本,不允许往任何对象上添加脚本。on(release){stop();}//停止播放主时间轴例在“帧”与“按钮”上添加动作脚本--修改第一章中的例子:可爱的小松鼠1)在第50帧上,加上gotoAndPlay(100);及音效试一试。。。友情提示:别忘了,在第50帧处先插入关键帧,再添加动作脚本。音效在公用库中找:IndustryTapePullofRollElectrical01.mp32)添加一个Replay按钮:代码:on(release){stopAllSounds();//停止原来的所有音乐,准备开始新的音乐gotoAndPlay(1);}例在”电影剪辑”实例上添加动作脚本—as3.0不允许•在恐龙实例long_mc上直接添加下列所有代码:on(rollOver){_root.stop();}(将帧频改为12(不提倡),或帧数改为180)//当鼠标滑过影片剪辑时,主时间轴停止播放,其中的_root不能省略!!!on(rollOut){_root.play();}//当鼠标滑离影片剪辑时,主时间轴恢复播放on(press){_root.long_mc.stop();}//等价于相对路径:this.stop();或stop();//当在影片剪辑上按下鼠标时,影片剪辑long_mc停止播放on(release){_root.long_mc.play();}//等价于相对路径:this.play();或play();//当在影片剪辑上按下并释放鼠标时,影片剪辑long_mc恢复播放强调注意:1)_root指主时间轴,这里不能省略,否则系统认为是当前MC:long_mc.2)每个关键帧中的相应mc上都需添加同样这样一组代码。所以先在第一帧中的mc上添加动作,然后在做后面的插入关键帧,补间动画等,比较快捷。例修改上例:给小恐龙加倒影,并同步控制倒影的动作。。。•制作带倒影的恐龙元件:选中舞台上的小恐龙再转化为元件,命名为“带倒影的小恐龙”,实例名为long_mc,双击进入其编辑状态:复制一个小恐龙,垂直翻转,调整其色调变黑,并用任意变形工具适当变形做成倒影状。设置小恐龙和其倒影实例名分别为:long1_mc,long2_mc.并将其它所有关键帧中的小恐龙交换为“带倒影的小恐龙”•在所有关键帧中带倒影的小恐龙实例long_mc上直接添加下列所有代码:on(rollOver){_root.stop();}on(rollOut){_root.play();}on(press){this.long1_mc.stop();this.long2_mc.stop();}//当在mc上按下鼠标时,元件long_mc内部的小恐龙long1_mc和倒影long2_mc停止播放on(release){this.long1_mc.play();this.long2_mc.play();}//当在mc上按下并释放鼠标时,元件long_mc内部的小恐龙long1_mc和倒影long2_mc恢复播放on()鼠标事件处理函数中常用的鼠标事件MouseEvent参数对照表MouseEvent功能press当鼠标指针经过按钮时,按下鼠标release当鼠标指针经过按钮时,按下再释放鼠标按钮rollover鼠标指针滑过按钮。(没有释放鼠标时,鼠标在上)rollout鼠标指针滑出按钮区域。(没有释放鼠标时,滑出)releaseOutside当鼠标指针在按钮之内时按下按钮后,将鼠标指针移到按钮之外,此时释放鼠标按钮dragover拖进按钮区域dragout拖出按钮区域Keypress“键名”“按键”按某键1、点语法“.”:可以通俗的理解成“…的的意思。点语法的结构:点的左侧可以是动画中的对象、实例或时间轴,点的最右侧是与左侧元素相关的属性、变量或动作。2、两种路径表达方式:绝对路径和相对路径绝对路径是以当前主场景(即根时间轴)为出发点,以目标对象为结束点;如:河师大.数学学院12级.应数1班.李婷.上台领奖品_root.play();_root.shu_mc.play();_root.long_mc.long1_mc.stop();相对路径则是从发出指令的对象所在的时间轴为出发点,以目标对象为结束点。如:我们班(this).李婷.上台领奖品this.long1_mc.play();//当前mc中的子元件实例long1_mc恢复执行this._alpha=50;//当前mc的透明度赋为50%_parent._x=_parent._x+20;//当前元件mc的父元件的x坐标+20•特别注意:两种路径都可以利用动作面板中的“插入目标路径”按钮轻松完成输入。本节涉及的语法及规范_root.long_mc.play();表示:主时间轴下的实例long_mc恢复执行“插入目标路径”按钮常用对象属性对照表:(属性名前边都有一个下划线)MC复制函数的一般格式:(仅用于as2.0)duplicateMovieClip(目标,新名称,深度)•目标:要复制的舞台上的目标MC实例名称•新名称:新复制MC的实例名•深度:新复制MC的位置深度深度可以为任意(±)整数值,一个深度上只能复制一个MC实例,默认的深度为0。MC删除函数的一般格式:(仅用于as2.0)removeMovieClip(目标)•目标:指定要删除的目标MC实例名称四、舞台上的MC实例的复制函数:duplicateMovieClip()•层1(背景):鲜花盛开的绿草地•层2(移动的松鼠mc):拖一个松鼠元件到舞台,再次转化为元件,命名为“移动的松鼠”,双击进入“移动的松鼠”元件的编辑状态,制作160帧的补间动画:1—80帧从左到右移动,81—160帧从右到左移动。回到主场景,设置“移动的松鼠”元件实例名为:”shu_mc”.•层3(as:用代码复制“移动的松鼠mc”):此层帧上代码:•第1帧:stop();shu_mc._visible=0;//设置原始的鼠实例不可见•第2帧:n=0;m=0;//n:复制鼠的个数及所在深度,m:删除鼠的个数及所在深度•第3帧:n++;if(n=5){duplicateMovieClip(shu_mc,shu_mc+n,n);//复制鼠_root[shu_mc+n]._x=shu_mc._x-15*n;//设置复制鼠的位置_root[shu_mc+n]._y=shu_mc._y+30*n;}•第10帧:if(n=5){gotoAndPlay(3);}else{stop();}•层4(按钮):“Play”按钮上的代码:on(release){gotoAndPlay(2);}•“删除mc”按钮上的代码://从最底层开始删起on(release){if(n5){m++;removeMovieClip(shu_mc+m);}}•层5(背景音乐):“同步”设置为:“开始”。例小松鼠的复制与删除条件判断语句的一般格式:if(条件){执行指令}else{执行指令}五、条件判断语句“if、else”for循环语句格式如下:for(变量初始值;循环条件;循环变量加增量){条件成立时执行的动作}例:“梦幻线族”中的代码段for(i=1;i100;i++){duplicateMovieClip(line_mc,line_mc+i,i);_root[line_mc+i]._x=line_mc._x+3*i;//新复制的line在x方向平移_root[line_mc+i]._rotation=3.6*i;//新复制的line_mc旋转}六、“for”循环语句例由一根曲线复制出来的“梦幻线族”•层1(变换线段mc):绘制一条直线,转化为元件,命名为“动态变形直线”,双击其进入元件的编辑状态:制作变换线段元件:•如做75帧的形状补间动画:在各关键帧中用鼠标对线段,拉伸、变色即可。•回到场景1,将动态线段实例命名为line_mc•层2(as):代码如下stop();line_mc._visible=false;//原始线段mc不可见line_mc._x=120;line_mc._y=200;//指定线段mc的位置for(i=1;i100;i++){duplicateMovieClip(line_mc,line_mc+i,i);_root[line_mc+i]._x=line_mc._x+3*i;//新复制的line在x方向平移_root[line_mc+i]._rotation=3.6*i;//新复制的line_mc旋转}例变幻花环•层1(变换椭圆mc):绘制一个七彩椭圆,转化为元件,命名为“动态变形椭圆”,双击其进入元件的编辑状态:对椭圆做拉伸、变色、平移等75帧形状补间动画。•回到场景1,将动态椭圆实例命名为line_mc•层2(as):代码如下stop();line_mc._visible=false;//原始线段mc不可见line_mc._x=250;line_mc._y=200;//指定线段mc的位置for(i=1;i50;i++){duplicateMovieClip(line_mc,line_mc+i,i);_root[line_mc+i]._rotation=6*i;//旋转每条复制的线段}•运行测试,即可得一个不断变换的图形。•拖拽函数:使目标mc在影片播放过程中可用鼠标拖动startDrag(mc,lock[,x0,y0,x1,y1]);•其中:mc:要拖动的影片剪辑实例名•Lock:可以是一个数值或逻辑表达式,其值为:真或假•true:锁定mc到鼠标位置中央—常用于实现鼠标跟随•false:锁定mc到执行函数时与鼠标的相对位置•x0,y0,x1,y1:是mc的注册点(mc选中时那个小十字)允许拖动矩形范围的左上角和右下角坐标,省略时默认拖动范围为整个舞台。•取消拖拽的函数:stopDrag();(无参函数)七、拖拽函数:startDrag()与stopDrag()实例能拖拽的冰激凌•层1(霓虹动态矩形框与gif点缀):绘制6像素宽的矩形框并转化为元件,双击进入后再次转化为元件,做如下依次改变各关键帧内矩形的色调的传统补间动画。•层2(两个冰激凌mc):在冰激凌1mc上添加动作:on(press){startDrag(this