《ActionScript基础程序设计(精品).ppt》由会员分享,可在线阅读,更多相关《ActionScript基础程序设计(精品).ppt(53页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、ActionScript基础程序设计认识认识flash中的函数中的函数一、认识函数n函数的一般形式函数的一般形式Stop()Number(9)Math.atan2(y,x)n命名命名函数名函数名();();括号中一般为参数、变量名、布尔值等,根据函括号中一般为参数、变量名、布尔值等,根据函数的类型不同在数的类型不同在“动作动作”面板中有必要的提示;面板中有必要的提示;当函数中需要多个参数时,在参数与参数之间当函数中需要多个参数时,在参数与参数之间要用逗号隔开。要用逗号隔开。在函数的学习中,应该重视它的调用方法,而不在函数的学习中,应该重视它的调用方法,而不是它的内部应该如何编写。是它的内部应该
2、如何编写。n自定义函数自定义函数Flash内置的函数是有限的,所以实现的功内置的函数是有限的,所以实现的功能也有限,要扩展函数的功能,就要自能也有限,要扩展函数的功能,就要自定义函数,也就是使用关键字定义函数,也就是使用关键字function来实现。格式为:来实现。格式为:function 函数名()函数名()定义完成后就可以直接调用了。定义完成后就可以直接调用了。例31n本例是利用自定义函数实现指定帧的跳本例是利用自定义函数实现指定帧的跳转功能。转功能。1.新建文档;并新建名为新建文档;并新建名为“元件元件1”的影片的影片剪辑元件,在该元件中制作一个简单的剪辑元件,在该元件中制作一个简单的动
3、作补间动画。动作补间动画。2.返回主场景,将元件返回主场景,将元件1拖到主场景中,拖到主场景中,并在并在“属性属性”面板中将实例名设置为面板中将实例名设置为mc 3.在主场景中新建一层,在该层的第在主场景中新建一层,在该层的第1帧帧输入代码:输入代码:function mcToFrame()mc.gotoAndstop(20);mcToFrame();/调用函数调用函数4.测试结果。测试结果。在上例中,函数mcToFrame()代替了函代替了函数中的数中的gotoAndstop(20)的的作用。作用。n但是函数但是函数mcToFrame()只只适用于影片剪辑实适用于影片剪辑实例例mc,不能通用
4、;为了使函数适用于所有的不能通用;为了使函数适用于所有的影片剪辑实例,在函数中应该建立一个数据类影片剪辑实例,在函数中应该建立一个数据类型为型为MovieClip的的变量,用来代表影片剪辑的变量,用来代表影片剪辑的实例名。表示为:实例名。表示为:Function mcToFrame(obj:MovieClip,frameNum:Number)obj.gotoAndstop(frameNum);mcToFrame(mc,20);二、程序的基本结构:n顺序结构顺序结构n选择结构选择结构n循环结构循环结构1、顺序结构n从程序的开头一直执行到结尾,只执行一次。(常用)n例如:Var a=3;Var b
5、=3;Var c=(a+b)*c;trace(c);n注意认真理解实例322、选择结构n根据一个条件来判断,当条件为真时,执行一段代码,否则的话,就执行另一段代码。n特点:只执行两段代码中的一段。n例如:var a=true;var b=3;if(a)b*=3;else b/=3;trace(b);3、循环结构n当条件为真时,就反复执行程序,一直到条件为假时停止。n特点:有一个重复执行的程序过程。n例如:var a=8;while (a0)trace(a);a-;三、事件和事件处理n事件是指软件或硬件发生的事情,它需要事件是指软件或硬件发生的事情,它需要FLASH应用程序对这些事件有一定的响应
6、。应用程序对这些事件有一定的响应。n硬件发生的事件有硬件发生的事件有:按下键盘、单击鼠标、移:按下键盘、单击鼠标、移动输出、鼠标等。动输出、鼠标等。n软件发生的事件有软件发生的事件有:影片剪辑被载入、影片剪:影片剪辑被载入、影片剪辑被卸载等。辑被卸载等。n一般使用一般使用on()和和onClipEvent()两个处理函数两个处理函数来完成。来完成。例1:按钮控制物体的移动1.新建文档,在场景中建立一个影片剪辑的实新建文档,在场景中建立一个影片剪辑的实例,实例名为例,实例名为ball。2.新建一个按钮元件,并在按钮元件上输入代新建一个按钮元件,并在按钮元件上输入代码:码:On(keypress“
7、”)ball._x-10;3.测试影片。按住左方向键试试元件的移动方测试影片。按住左方向键试试元件的移动方向。向。4.思考:如果要使影片剪辑元件由上、下、右思考:如果要使影片剪辑元件由上、下、右方向大运动时,该怎样设置呢?方向大运动时,该怎样设置呢?例2:菜单的制作1.新建文档,并新建一个按钮元件,在该元件新建文档,并新建一个按钮元件,在该元件上输入代码:上输入代码:On(rollover)_parent.menu.stop();On(rollout)_parent.menu.play();2.按住按住ctrl键不动,用鼠标拖动复制出七个按键不动,用鼠标拖动复制出七个按钮实例,并在钮实例,并在
8、“对齐对齐”面板中将按钮按照面板中将按钮按照“水平居中分布水平居中分布”;选中所有的按钮将它们组;选中所有的按钮将它们组合(合(ctrl+G键)。键)。3.保持按钮元件在选中状态,并按保持按钮元件在选中状态,并按F8键转换为影片键转换为影片剪辑元件,并在剪辑元件,并在“属性属性”面板中将实例名设置为面板中将实例名设置为menu。4.进入按钮的编辑状态,让第一个按钮与场景点左进入按钮的编辑状态,让第一个按钮与场景点左边缘对齐。并在第边缘对齐。并在第80帧插入一个关键帧,让第五帧插入一个关键帧,让第五个按钮与场景点左边缘对齐。并在个按钮与场景点左边缘对齐。并在1帧和帧和80帧之帧之间创建动作补间。
9、间创建动作补间。5.测试影片。测试影片。6.如果在按钮实例上输入代码:如果在按钮实例上输入代码:On(release)getURL(“http:/”,”_blank”);7.再次测试影片。再次测试影片。接下来查看例接下来查看例362.onClipEvent()事件处理函数n与与on()函数不同,它只能作用于影片剪函数不同,它只能作用于影片剪辑实例。辑实例。n提示动作有提示动作有9种,选择方法与种,选择方法与on()函数相函数相同。同。触发事件作用load影片剪辑一旦被实例化并出现在时间轴中时,即启动此动作。unload在从时间轴中删除影片剪辑之后,此动作在第 1 帧中启动。enterFrame
10、以影片剪辑帧频不断触发的动作mouseMove每次移动鼠标时启动此动作。mouseDown当按下鼠标左键时启动此动作。mouseUp当释放鼠标左键时启动此动作。keyDown当按下某个键时启动此动作。keyUp当释放某个键时启动此动作。data当在 loadVariables()或 loadMovie()动作中接收数据时启动此动作。格式:onClipEvent(事件名称事件名称)程序程序n例如:例如:onClipEvent(load)trace(“发生发生load事件事件”)例381.新建文档,并在场景中建立一个动态文本,其变量为time。2.选中动态文本框,将其转换为影片剪辑元件,并输入代码
11、:onClipEvent(load)var time=0;var rate=12;var temp=0;onClipEvent(enterFrame)temp+=1;/程序每执行一次,temp加1time=Math.round(temp/rate*100)/100;/把temp除以帧频,并保留两位小数3.测试影片。例391.新建文档,并创建一个影片剪辑元件,将其新建文档,并创建一个影片剪辑元件,将其拖入主场景中。拖入主场景中。2.在这个影片剪辑元件中输入代码:在这个影片剪辑元件中输入代码:onClipEvent(mouseMove)if(myDraw)_root.lineStyle(0,0 x
12、000000,100);_root.lineTo(_root._xmouse,_root._ymouse);/当鼠标移动时,沿鼠标位置不断画线当鼠标移动时,沿鼠标位置不断画线 onClipEvent(mouseDown)myDraw=true;_root.moveTo(_root._xmouse,_root._ymouse);/鼠标按下时鼠标按下时myDraw为真,并在鼠标位置定为真,并在鼠标位置定义画线的起点义画线的起点onClipEvent(mouseUp)myDraw=false;/当鼠标释放时,当鼠标释放时,myDraw为假,停止画线为假,停止画线3.测试影片。测试影片。例3101.新
13、建文档。在主场景中用直线新建文档。在主场景中用直线工具绘制一箭头。工具绘制一箭头。2.选中场景中的全部线条(或用选中场景中的全部线条(或用ctrl+A),),将其转换为影片剪将其转换为影片剪辑元件,并把注册点放在下中辑元件,并把注册点放在下中处。处。3.在主场景中选中影片剪辑元件,输入代码:在主场景中选中影片剪辑元件,输入代码:onClipEvent(keyDown)if(Key.getCode()=90)_rotation-=6;/如果按下如果按下“z”键,炮塔向左旋转键,炮塔向左旋转6度度if(Key.getCode()=88)_rotation+=6;/如果按下如果按下“x”键,炮塔向右
14、旋转键,炮塔向右旋转6度度onClipEvent(keyUp)trace(Key.getCode();/如果按键被释放,输出按键的键值如果按键被释放,输出按键的键值4.测试影片。测试影片。四、常用函数(内置函数)nPlay()与与stop()Play();stop();_root.ball.stop();ngotoAndplay()与与gotoAndstop()nprevFrame()与与nextFrame()、prevScene()与与nextScene()nduplicateMovieClip()作用是通过复制来创作用是通过复制来创建新的影片剪辑的实例。建新的影片剪辑的实例。nduplic
15、ateMovieClip(目标,新实例名称,深目标,新实例名称,深度度);目标:目标:被复制度影片剪辑的名称和路径。被复制度影片剪辑的名称和路径。新实例名称:新实例名称:是复制后得到的影片剪辑实例的名是复制后得到的影片剪辑实例的名称。称。深度:深度:代表影片剪辑实例在影片中的叠放顺序;代表影片剪辑实例在影片中的叠放顺序;低深度在高深度之下。低深度在高深度之下。例:4-11.新建一文档,并在主场景中新建一实例名新建一文档,并在主场景中新建一实例名为为ball1的影片剪辑实例,在第一帧中输的影片剪辑实例,在第一帧中输入代码:入代码:duplicateMovieClip(ball1,ball2,1)
16、;ball1.insName=ball1._name;ball2.insName=ball2._name;ball2._x=ball1._x+50;ball1.dep=ball1.getDepth()ball2.dep=ball2.getDepth()2.在元件编辑区中,绘制如在元件编辑区中,绘制如图所示的两个动态文本框,图所示的两个动态文本框,分别定义变量名为:上为分别定义变量名为:上为insName;下为;下为dep3.测试影片。测试影片。例:复制多个影片剪辑实例用刚才的ball1实例,在主场景点第一帧输入代码:var i=2;var num=10;while(inum)duplicate
17、MovieClip(ball1,ball+i,i-1);thisball+i._x=ball1._x+50*(i-1);thisball+i.insName=thisball+i._name;thisball+i.dep=thisball+i.getDepth();i+;ball1.insName=ball1._name;ball1.dep=ball1.getDepth();n测试影片。测试影片。n如果在主场景中加入一个按钮元件,并如果在主场景中加入一个按钮元件,并在该元件上输入代码:在该元件上输入代码:On(release)removeMovieClip(ball3);你再看看结果怎样?你再
18、看看结果怎样?3.startDrag()和stopDrag()nstartDrag()函数的作用是使影片剪辑实函数的作用是使影片剪辑实例在影片播放过程中可拖动。例在影片播放过程中可拖动。n格式:格式:startDrag(target,lock,left,top,right,bottom);ntarget表示要拖动的影片剪辑的目标路径。表示要拖动的影片剪辑的目标路径。nlock是个是个布尔值,指定可拖动影片剪辑是布尔值,指定可拖动影片剪辑是锁定到鼠标指针位置中央(锁定到鼠标指针位置中央(true););锁定锁定到用户每次单击该影片剪辑的位置上用到用户每次单击该影片剪辑的位置上用(false)。)
19、。nleft,top,right,bottom分别设置影片剪辑分别设置影片剪辑拖动的左、上、右、下的范围(父级坐标拖动的左、上、右、下的范围(父级坐标基础)。基础)。例:自定义鼠标指针1.新建文档。在主场景中绘制一个图形,并将新建文档。在主场景中绘制一个图形,并将其转换为一个影片剪辑元件,注册点位于图其转换为一个影片剪辑元件,注册点位于图形的正中。形的正中。2.在主场景中选中元件,将在主场景中选中元件,将“属性属性”面板中的面板中的实例名设置为实例名设置为arrow。3.单击主场景中的第单击主场景中的第1帧,输入代码:帧,输入代码:startDrag(arrow,true);4.测试影片。测试
20、影片。5.要停止对影片剪辑实例的拖动时,可用:要停止对影片剪辑实例的拖动时,可用:arrow.stopDrag();例2:任意拖动条1.新建文档。在主场景中绘制一个实例名为新建文档。在主场景中绘制一个实例名为btn的按钮实例元件,选中该实例,输入代的按钮实例元件,选中该实例,输入代码:码:on(press)startDrag(btn);on(release)stopDrag();2.在在场景中制作一个实例名为场景中制作一个实例名为ball的影片的影片剪辑实例,并在该实例上输入代码:剪辑实例,并在该实例上输入代码:onClipEvent(enterFrame)this._x=_root.btn.
21、_x;3.测试影片。测试影片。例3:水平拖动条1.新建文档。在主场景中绘制一个实例名为新建文档。在主场景中绘制一个实例名为ball的的影片剪辑实例元件。影片剪辑实例元件。2.新建一个按钮,如图;并在按钮上输入代码:新建一个按钮,如图;并在按钮上输入代码:on(press)startDrag(this,false,left,top,right,bottom);on(release)stopDrag();3.选中主场景中的按钮实例将其转换为影片剪选中主场景中的按钮实例将其转换为影片剪辑元件,在主场景中选中按钮输入代码:辑元件,在主场景中选中按钮输入代码:onClipEvent(load)top=_
22、y;bottom=_y;left=_x;right=_x+100;onClipEvent(enterFrame)_parent.ball._x=(_x-80)*24.测试影片。测试影片。如果在按钮元件的第如果在按钮元件的第一帧上输入代码:一帧上输入代码:btn.useHandCursor=false;4.loadMovie()和loadMovieNum()n在在当前影片不停止的情况下,播放另一当前影片不停止的情况下,播放另一影片;或多个影片间自由切换。影片;或多个影片间自由切换。n不同点:后者可以给影片加上播放级别不同点:后者可以给影片加上播放级别(即:深度)。(即:深度)。n格式:格式:lo
23、adMovie(影片或图片,目标路径影片或图片,目标路径)unloadMovie(影片或图片,目标路径影片或图片,目标路径)n影片或图片:表示要加载的影片或图片:表示要加载的swf或或jpeg文件的绝对或相对文件的绝对或相对URL地址。地址。(文件名(文件名前不能用文件名的或磁盘标识符。)前不能用文件名的或磁盘标识符。)n目标路径:要加载的文件的目的地。目标路径:要加载的文件的目的地。(一般用一个空的影片剪辑元件,实例(一般用一个空的影片剪辑元件,实例名为名为mc)例1:加载图片1.在你的在你的D盘的根目录上新建一个文件夹盘的根目录上新建一个文件夹01,并将,并将新建的新建的FLASH文档文档
24、001存入其中。存入其中。2.在在01文件夹下再新建一个文件夹下再新建一个02文件夹,并将一张文件夹,并将一张jpeg图片和一个图片和一个swf文件存入其中,分别重命名文件存入其中,分别重命名为为03和和04(注意不要更改扩展名)(注意不要更改扩展名)。3.在文档在文档001中新建一个实例名为中新建一个实例名为mc的空影片剪的空影片剪辑元件,将其拖入主场景中的坐标原点处。辑元件,将其拖入主场景中的坐标原点处。4.新建一层为新建一层为as,在第在第1帧输入代码:帧输入代码:loadMovie(02/03.jpg,mc);5.测试影片。测试影片。如果将代码改为:如果将代码改为:loadMovie(
25、02/04.swf,mc);测试影片又会怎样?测试影片又会怎样?如果:在场景中的一个按钮元件上输如果:在场景中的一个按钮元件上输入代码:入代码:On(release)unloadMovie(mc);就卸载影片或图片了。就卸载影片或图片了。5.loadVariables()和loadVariablesNum()n作用:作用:从外部文本(从外部文本(txt文件、文件、ASP、PHP、CGI脚本、脚本、Perl脚本等生成的文脚本等生成的文本)中读取数据,并设置目标影片剪辑本)中读取数据,并设置目标影片剪辑中变量的值。中变量的值。n区别:区别:前者是加载数据到目标路径;后前者是加载数据到目标路径;后者
26、是加载到一定的级别。者是加载到一定的级别。例1:加载外部文本1.在D盘的根目录上,新建一个文件夹新建一个文件夹01,在,在01文件夹下,再新建一个文本文文件夹下,再新建一个文本文档,并命名为档,并命名为“外部文本外部文本.txt”,在这在这个文本中写入:个文本中写入:target=动画制作动画制作2.在在flash中新建文档,并保存在中新建文档,并保存在01文件文件夹下。夹下。3.在主场景中制作一个在主场景中制作一个变量名变量名为为target的的动态文本框,选中第动态文本框,选中第1帧输入代码:帧输入代码:System.useCodepage=true;/消除乱码消除乱码loadVariab
27、les(“外部文本外部文本.txt”,“”);/载入文本文档载入文本文档3.测试影片。测试影片。例2:加载外部变量1.在在D盘的根目录上,新建一个文件夹盘的根目录上,新建一个文件夹01,在,在01文件夹下,再新建一个文本文文件夹下,再新建一个文本文档,并命名为档,并命名为“外部变量外部变量.txt”,在这在这个文本中写入:个文本中写入:xspeed=2&speed=52.在在flash中新建文档,并保存在中新建文档,并保存在01文件文件夹下,在主场景点第夹下,在主场景点第1帧输入代码:帧输入代码:loadVariablesNum(外部变量外部变量.txt,0);3.在主场景中新建一个影片剪辑实
28、例,选在主场景中新建一个影片剪辑实例,选中它输入代码:中它输入代码:onClipEvent(enterFrame)_x+=Number(_root.xSpeed);_y+=Number(_root.ySpeed);4.测试影片。测试影片。6.getURL()函数n作用:将来自特定作用:将来自特定URL的文档加载在窗口中,的文档加载在窗口中,或将变量传递到位于所定义的另一个应用程序。或将变量传递到位于所定义的另一个应用程序。超级联接网页:超级联接网页:on(release)getURL(http:/);电子邮件联接:电子邮件联接:on(release)getURL(mailto:);打开外部文件
29、:打开外部文件:on(release)getURL(外部文本外部文本.txt);on(release)getURL(02/03.swf);链接到链接到“我的电脑我的电脑”on(release)getURL(file:/:20D04FE0-3AEA-1069-A2D8-08002B30309D);链接到链接到“我的文档我的文档”on(release)getURL(file:/:450D8FBA-AD25-11D0-98A8-0800361B1103);认真查看认真查看3227.fscommand()函数n作用:实现对影片浏览器(即作用:实现对影片浏览器(即flash player)的)的控制。控
30、制。n格式:格式:fscommand(命令,参数命令,参数);例如:例如:fscommand(“fullscreen”,true);命令命令参数参数功能功能quit无无关闭影片播放器关闭影片播放器fullscreen布尔值布尔值是否全屏是否全屏allowscale布尔值布尔值是否随播放器窗口是否随播放器窗口的大小缩放的大小缩放showmenu布尔值布尔值是否有活动菜单是否有活动菜单exec应用程序应用程序路径路径从从播放器执行其它播放器执行其它程序程序trapallkeys布尔值布尔值是否锁定键盘输入是否锁定键盘输入8.getTimer()函数n作用:返回自影片开始播放时起已经经作用:返回自影
31、片开始播放时起已经经过的毫秒数。过的毫秒数。n无参数无参数例1:倒计时器1.新建文档,并将图层新建文档,并将图层1命名为命名为t。2.在主场景中创建一个动态文本框,在主场景中创建一个动态文本框,变量名变量名为为t。3.新建一新建一as图层,其中插入图层,其中插入3个空白关键帧。个空白关键帧。在第在第1帧上输入代码:帧上输入代码:time=60;4.第第2帧上输入代码:帧上输入代码:t1=getTimer()/1000;t=time-t1;5.第第3帧上输入代码:帧上输入代码:gotoAndPlay(_currentframe-1)五、行为n行为:就是预先写好的程序代码,无需行为:就是预先写好的程序代码,无需自己对手编写,就能实施控制。自己对手编写,就能实施控制。添加行为按钮添加行为按钮预览区预览区显示行为的位置显示行为的位置n操作时,只需操作时,只需选中对象,打选中对象,打开行为面板即开行为面板即可添加相应的可添加相应的项目。项目。n查看查看326