Flash ActionScript2.0教程
- 格式:doc
- 大小:1.05 MB
- 文档页数:84
Flash入门及学ActionScript编程的正确途径下面我的说每一个问,请你都不要跳过,不管您用什么手段,必须一个个吃透,否则欲速则不达。
1、三种图层图层:和Photoshop的图层差不多。
导向层:不仅可以导向Motion动画,还有参考层的作用(这个功能用的人就不多了)。
蒙板层:蒙板层有图像的地方,它下面那层的内容才可显示,有点象3DS MAX里的蒙板贴图。
2、三种帧:即帧,关键帧,空白关键帧。
3、三种符号:即影片剪缉,按钮,图形,初学可以不用图形,用影片剪缉。
4、三种Flash动画的文件格式:即EXE,SWF,HQX5、三种Flash常用的声音:MP3,AVI,WAV6、三种影片生成方式;输出动画,发布影片,CTRL+ENTER7、三个重要数字:帧率,影片尺寸,背景色值。
6、三个Flash常用图片格式:jpg ,png,gif7、三个重要快捷键:F8_转换为符号Tab_显示/隐藏面板Ctrl_+/-缩放。
*********************************************************学A S编程的正确途径1、你先学会加动作的三种方式:在帧上加,在MC上加,在按钮上加。
用play stop goto这三个命令反复练习。
不要用太多的命令给自己吃迷晕药。
用实例练,不要空练。
2、会了我说的1后,要学给按钮加动作的8种方法和给mc加的9种方法。
3、会了我说的2了,就要学个编程最基础最重要的东西----路径的描述(能看懂就能用)。
1> _root.mc1.mc2. ... mcn.play()[或stop(), _x, .......]2>_parnet3>this4>mc1.mc2. ...5>_leveln.mc1.mc2. ... mcn.play()[或stop(), _x, .......]练习这样一个实例对你也许有帮助, 把一首你喜欢听的歌随意放在某个MC中,随意地在某个mc或按钮上加动作去控制它,想让它停就停,想让它放就放。
ActionScript 编程实战Flash动作面板概述ActionScript1.0和2.0的多数代码都是写在时间轴或元件中,而ActionScript3.0以后,只允许将代码写在时间轴和外部的类文件中。
将代码写在时间轴上,就需要使用到Flash 的【动作面板】。
1.动作面板在FlashCS4中,执行【窗口】|【动作】命令或按F9快捷键即可打开【动作】面板。
通过【动作面板】,用户可以将ActionScript脚本代码写在Flash的时间轴上,并对脚本代码进行格式化、验证语法等操作,如图1-11所示。
图1-11 【动作】面板在图1-11中,包含4个部分,如下所示。
●【动作工具箱】在【动作】面板中,【动作工具箱】的作用是提供ActionScript所有的包、类、属性和方法列表。
(关于包、类、属性和方法,请参考之后的面向对象编程相关章节)用户可以根据程序编写的需要,自行选择相应地语言元素,双击该元素,将其添加到代码中。
●【脚本导航器】【脚本导航器】的作用是提供当前编辑的代码位置,以及当前影片中所有代码的位置列表。
除当前选择的代码外,每段代码根据其所在的场景和图层、帧的位置顺序进行排列。
●【脚本助手】【脚本助手】的作用是显示和修改当前选择的表达式值、函数的名称、参数和数据类型等相关信息。
●【脚本窗格】【脚本窗格】的作用是输入和编辑脚本代码用户可以方便地拖动【动作】面板中各部分之间地分隔线,可以方便地调整各部分地大小。
同时,用户也可以对【动作】面板地边缘进行拖动,改变【动作】面板的大小。
2.【动作】面板的【脚本窗格】Flash CS4在【脚本窗格】中提供了一组按钮,可以帮助用户对ActionScript代码进行调试和格式化,如图1-12所示。
图1-12 【脚本窗格】在上面的【脚本窗格】中,包含如下按钮。
●【将新项目添加到脚本中】按钮单击该按钮,将弹出ActionScript各包及类的菜单供用户选择,并添加到代码中。
FLASHActionscript2.0脚本代码大全一.基本脚本代码:- Go to 跳转到指定的帧- Play 播放- Stop 停止- Toggle High Quality 在高画质和低画质间切换- Stop All Sounds 停止所有声音的播放- Get URL 跳转至某个超联结- FSCommand 发送FSCommand命令- Load Movie 装载影片- Unload Movie 卸载影片- Tell Target 告知目标- If Frame Is Loaded ..判断帧是否被完全载入- On Mouse Event 鼠标事件二.其他Actionscript2.0- break 跳出循环- call 调用指定帧(一般喊有某个特定函数)- comment 注释- continue 继续循环- delete 删除一个对象(Object)中的变量- do while do while循环- duplicateMovieClip 复制MC- else 否则(与if联用)- else if 否则如果(与if联用)- uate 调用自定义函数(Function)- for for循环- for .. in 依次取得对象(Object)中的各个属性或者某个数组中的所有元素- FSCommand 发送FSCommand命令- function 声明自定义函数- getURL 跳转至某个超联结- goto 跳转到指定的帧- if 如果- ifFrameLoaded ..帧是否完全被载入- include 读入外部的ActionScript程序文件(.as)- loadMovie 装载MC- loadVariables 转载外部文件中的数据,这些外部文件可以是文本文件,或者是由ASPCGI等脚本返回的文本值- on 鼠标事件的触发条件- onClipEvent MC的事件触发程序- play 播放- print 输出到打印机- removeMovieClip 删除MC- return 在函数(function)中返回一个值- set variable 设定变量值- setProperty 设定属性- startDrag 开始拖动- stop 停止- stopAllSounds 停止所有声音的播放- stopDrag 停止拖动- swapDepths 交换两个MC的深度- tellTarget 指定Action命令生效的目标- toggleHighQuality 在高画质和低画质间切换- trace 跟踪调试- unloadMovie 卸载MC- var 声明局部变量- while 当..成立时..- with 对..对象(Object)做..。
FlashActionscript教程:游戏中的碰撞...-电脑资料教程简单碰撞下面是代码://把你舞台上的MC实例名放入数组,测试var ballA:Array = [ball1, ball2, ball3, ball4, ball5];//随机初始化每个MC的运动速度和方向for (var i = 0; i<="">ballA.dx = 11*rand1_1();ballA.dy = 7*rand1_1();}//随机产生1或-1function rand1_1():Number {return random(2) ? -1 : 1;}Stage.scaleMode = "noScale";Stage.align = "TL";var sw:Number = Stage.width;var sh:Number = Stage.height;var stageListener:Object = new Object();//舞台大小改变时,重置sw、shstageListener.onResize = function() {sw = Stage.width;sh = Stage.height;};Stage.addListener(stageListener);nEnterFrame. = function () {for (var i = 0; i<="">//检测所有MC之间是否有碰撞,有就根据情况改变“增量”方向for (var j = i+1; j<="">if (ballA.hitTest(ballA[j])) {mc12(ballA, ballA[j]);ballA._x += ballA.dx;ballA[j]._x += ballA[j].dx;ballA._y += ballA.dy;ballA[j]._y += ballA[j].dy;}}//如果到了边界,就反射if ((ballA._xsw-ballA._width/2 && ballA.dx>0)) {ballA.dx *= -1;}if ((ballA._ysh-ballA._height/2 && ballA.dy>0)) {ballA.dy *= -1;}//移动一个“增量”ballA._x += ballA.dx;ballA._y += ballA.dy;}};//碰撞函数,根据两球碰撞方向和自身运动方向合成新的增量值function mc12(mc1:MovieClip, mc2:MovieClip) {var ang:Number = Math.atan2(mc2._y-mc1._y, mc2._x-mc1._x);var ang1:Number = Math.atan2(mc1.dy, mc1.dx);var ang2:Number = Math.atan2(mc2.dy, mc2.dx);var r1:Number = (mc1.dy/Math.sin(ang1))*Math.cos(ang-ang1);var r2:Number = (mc2.dy/Math.sin(ang2))*Math.cos(ang-ang2);var dx1:Number = r1*Math.cos(ang)+r2*Math.cos(ang);var dy1:Number = r1*Math.sin(ang)+r2*Math.sin(ang);mc1.dx = -mc1.dx+dx1;mc1.dy = -mc1.dy+dy1;mc2.dx = -mc2.dx+dx1;mc2.dy = -mc2.dy+dy1;}加入反弹效果代码://把你舞台上的MC实例名放入数组,测试var ballA:Array = [ball1, ball2, ball3, ball4, ball5];//随机初始化每个MC的运动速度和方向for (var i = 0; i<="">ballA[i].dx = 5*rand1_1();ballA[i].dy = 5*rand1_1();ballA[i].N=i;}//随机产生1或-1function rand1_1():Number {return random(2) ? -1 : 1;}Stage.scaleMode = "noScale";Stage.align = "TL";var sw:Number = Stage.width;var sh:Number = Stage.height;var stageListener:Object = new Object();//舞台大小改变时,重置sw、shstageListener.onResize = function() {sw = Stage.width;sh = Stage.height;};Stage.addListener(stageListener);nEnterFrame. = function () {for (var i = 0; i<="">//如果到了边界,就反射if ((ballA[i]._xsw-ballA[i]._width/2 && ballA[i].dx>0)) {ballA[i].dx *= -1;}if ((ballA[i]._ysh-ballA[i]._height/2 && ballA[i].dy>0)) {ballA[i].dy *= -1;}//检测所有MC之间是否有碰撞,有就根据情况改变“增量”方向for (var j = i+1; j<="">if (myHitT est(ballA[i],ballA[j])) {//if (ballA[i].hitTest(ballA[j])) {mc12(ballA[i], ballA[j]);ballA[i]._x += ballA[i].dx;ballA[j]._x += ballA[j].dx;ballA[i]._y += ballA[i].dy;ballA[j]._y += ballA[j].dy;}}//移动一个“增量”ballA[i]._x += ballA[i].dx;ballA[i]._y += ballA[i].dy;updateAfterEvent();};//碰撞函数,根据两球碰撞方向和自身运动方向合成新的增量值function mc12(mc1:MovieClip, mc2:MovieClip) {//碰撞角var ang:Number = Math.atan2(mc2._y-mc1._y, mc2._x-mc1._x);//运动角var ang1:Number = Math.atan2(mc1.dy, mc1.dx);var ang2:Number = Math.atan2(mc2.dy, mc2.dx);//反射角var _ang1:Number = 2*ang-ang1-Math.PI;var _ang2:Number = 2*ang-ang2-Math.PI;//运动矢量var r1:Number=Math.sqrt(mc1.dx*mc1.dx+mc1.dy*mc1.dy);var r2:Number=Math.sqrt(mc2.dx*mc2.dx+mc2.dy*mc2.dy);//碰撞矢量var a1:Number = (mc1.dy/Math.sin(ang1))*Math.cos(ang-ang1);var a2:Number = (mc2.dy/Math.sin(ang2))*Math.cos(ang-ang2);//碰撞矢量合成var dx1:Number = a1*Math.cos(ang)+a2*Math.cos(ang);var dy1:Number = a1*Math.sin(ang)+a2*Math.sin(ang);//碰撞后的增量mc1.dx = r1*Math.cos(_ang1)+dx1;mc1.dy = r1*Math.sin(_ang1)+dy1;mc2.dx = r2*Math.cos(_ang2)+dx1;mc2.dy = r2*Math.sin(_ang2)+dy1;//碰撞侦测function myHitTest(mc1:MovieClip,mc2:MovieClip):Boolean{ var a:Number=Math.sqrt((mc1._x-mc2._x)*(mc1._x-mc2._x)+(mc1._y-mc2._y)*(mc1._y-mc2._y));if(a-5<=(mc1._width+mc2._width)/2){return true;}else{return false;}}带旋转效果:代码://把你舞台上的MC实例名放入数组,测试var ballA:Array = [ball1, ball2, ball3, ball4, ball5];//随机初始化每个MC的运动速度、方向、旋转for (var i = 0; i<="">ballA[i].dx = 5*rand1_1();ballA[i].dy = 5*rand1_1();ballA[i].dr = 0;//增加旋转属性ballA[i].N=i;//球编号}//随机产生1或-1function rand1_1():Number {return random(2) ? -1 : 1;}//舞台属性Stage.scaleMode = "noScale";Stage.align = "TL";var sw:Number = Stage.width;var sh:Number = Stage.height;var stageListener:Object = new Object();//舞台大小改变时,重置sw、shstageListener.onResize = function() {sw = Stage.width;sh = Stage.height;};Stage.addListener(stageListener);//------nEnterFrame. = function () {for (var i = 0; i<="">//如果到了边界,就反射if (ballA[i]._x<="">ballA[i].dx *= -1;ballA[i].dr += ballA[i].dy;}if (ballA[i]._x>sw-ballA[i]._width/2 && ballA[i].dx>0) { ballA[i].dx *= -1;ballA[i].dr += -ballA[i].dy;}if (ballA[i]._y<="">ballA[i].dy *= -1;ballA[i].dr += -ballA[i].dx;}if (ballA[i]._y>sh-ballA[i]._height/2 && ballA[i].dy>0) { ballA[i].dy *= -1;ballA[i].dr += ballA[i].dx;}//检测所有MC之间是否有碰撞,有就根据情况改变“增量”方向for (var j = i+1; j<="">if (myHitT est(ballA[i],ballA[j])) {//if (ballA[i].hitTest(ballA[j])) {mc12(ballA[i], ballA[j]);ballA[i]._x += ballA[i].dx;ballA[j]._x += ballA[j].dx;ballA[i]._y += ballA[i].dy;ballA[j]._y += ballA[j].dy;}}//移动一个“增量”ballA[i]._x += ballA[i].dx;ballA[i]._y += ballA[i].dy;ballA[i]._rotation += ballA[i].dr;ballA[i].dr -= ballA[i].dr*0.01;}};//碰撞函数,根据两球碰撞方向和自身运动方向合成新的增量值function mc12(mc1:MovieClip, mc2:MovieClip) {//碰撞角var ang:Number = Math.atan2(mc2._y-mc1._y, mc2._x-mc1._x);//运动角var ang1:Number = Math.atan2(mc1.dy, mc1.dx);var ang2:Number = Math.atan2(mc2.dy, mc2.dx);//反射角var _ang1:Number = 2*ang-ang1-Math.PI;var _ang2:Number = 2*ang-ang2-Math.PI;//运动矢量var r1:Number=Math.sqrt(mc1.dx*mc1.dx+mc1.dy*mc1.dy);var r2:Number=Math.sqrt(mc2.dx*mc2.dx+mc2.dy*mc2.dy);//碰撞矢量var a1:Number = (mc1.dy/Math.sin(ang1))*Math.cos(ang-ang1);var a2:Number = (mc2.dy/Math.sin(ang2))*Math.cos(ang-ang2);//碰撞矢量合成var dx1:Number = a1*Math.cos(ang)+a2*Math.cos(ang);var dy1:Number = a1*Math.sin(ang)+a2*Math.sin(ang);//旋转矢量,这里还有点问题,旋转方向有时不对,,电脑资料《Flash Actionscript教程:游戏中的碰撞...》(https://www.)。
第一课认识编程环境ActionScript是针对Flash Player的编程语言,它在flash内容和应用程序中实现了交互性、数据管理以及其它许多功能.那么我们将程序写在什么地方呢?在flash创作环境中,我们的程序写在"动作"面板中而动作面板,又是与舞台上可以添加动作的对象相关联的.在ActionScript2.0中可以添加动作的对象有三种:关键帧、影片剪辑元件、按钮元件.编程实际就是向计算机下达指令,让计算机按我们的指令去完成一些任务.这就要求我们用计算机能看得懂的语言,这就是编程语言.ActionScript则是其中的一种.即然是语言,就同我们人类的语言一样它就有它自己的语法、语句、词汇等,这些东西就是我们要学习的内容.为了以后学习方便我们首先来学习一个语句:trace()这个语句的作用是,flash在运行时,将括号中的内容显示出来.上面我们提到,ActionScript2.0中可以添加动作的对象有三种:关键帧、影片剪辑元件、按钮元件.也就是说,我们可以在这三个对象的动作面板中编写程序.具体怎样作呢?我们来试试.新建一flash 文档,如果你的flash版本是CS3,那么请选择ActionScript2.0文档,因为本教程介绍的是ActionScript2.0.为什么不介绍3.0?因为sanbos发现很多人用的都是flash8.好,现在点击"插入"菜单,一"新建元件,建一个影片剪辑元件,随便画一个什么图形吧,将元件拖到舞台上;然后点击"窗口"一"公用库"一"按钮",然后随便选一个按钮拖到舞台上.这样,关健帧、影片剪辑、按钮都齐了.现在我们来看看怎样打开动作面板.在影片剪辑上点鼠标右键,然后在弹出菜单中点"动作",那么现在我们看到的就是动作面板了.图1:动作面板我们在按钮元件上执行相同的操作,可以得到相同的结果现在在时间轴的第1 帧上,执行相同的操作,一样地打开了动作面板.动作面板的右边留出了一大片空白,等着你去编写程序,鼠标指针在那儿闪着,便勾起了我们编程的冲动.于是你说:"我要编程了".上面我们不是介绍了一句,trace()吗?我们何不偷偷地在这里输上一句,也好过把编程的隐.于是你在这里输上:trace("我会编程了");注意大小写,括号后面跟着分号.测试影片.你会看到一个输出窗口,里面有"我会编程了"几个字是的,你已经会编程了.虽然只有一句,但它是一个ActionScript程序却是千真万确的.因此,这的确是一件值得祝贺的事情.来吧,让我们再说一次:"编程其实很容易".欣赏够以后,请关闭输出窗口,关闭播放窗口,回到几分钟之前,令我们自豪了一把的动作面板,我们来对它进行更进一步的认识.我们看到trace是蓝色的是的,ActionScript内部的词汇在编程环境中都会以蓝色表示.那么这就是一个技巧, 当你在输入程序时,如果输入ActionScript内部词汇时不是蓝色的,那么说明你输错了,那么你应该马上检查,是否有哪个字母输错了.现在问题出现了,你说我记不到那些词汇.在中学时英语考不出好成绩主要就是因为记不住单词.现在学习编程也记不住那些指令、语句,所以觉得编程好难.首先我还是说一句,你可能不太乐意听的话:多练自然就记住了.你说:我就是记不住,我是不是就不宜学习ActionScript编程呢?NO,你看说英语并不难,我张口就来.我们将标淮降低,只要你看到这些指令,能够认识它就行.相比之下,知道有些什么指令比记住那些指令的拼写要重要得多.回到动作面板,你就会明白这个道理.看看动作面板的左半部分,这里几乎将所有的指令列了出来,你可以分门别类地去找到相关指令,如影片剪辑控制、时间轴控制、常用语句等,找到相应语句,双击它,于是它便自动写到右边的编程窗口中了.是不是不用精确记住指令的拼写也能编程呢.在右边的编程窗口上面的工具栏最左边有一个加号,它具有与左边窗口相同的功能,不信你点它试试通常在ActionScript编程时,我们可能会习惯将代码写在影片剪辑、按钮元件上,这就必须要事件驱动,它的格式是:on(事件名称){要执行的语句}现在我们来试一试,在动作面板中输入 on(这时你会发现弹出了一个窗口,将所有事件列了出来,你只需用鼠标选用所需要的事件双击它或回车,事件就会自动写到屏幕上.是不是很方便?很多ActionScript程序都是对影片剪辑、按钮元件、文本框等对象进行操作,这需要在属性面板中为它们命名.良好的命名习惯,对我们编写程序会有很大的帮助.按照约定,影片剪辑元件的命名以_mc结尾,如my_mc,按钮元件则是以_btn结尾,文本框则是以_txt结尾.当然你完全可以不理采这些约定,随心所欲地为他们命名.我们说遵守这些约定,会对我们编程有所帮助.还是来试一试吧.建一影片剪辑元件,然后将它拖到舞台上,打开属性面板,为它取名为:mymc_mc,在第一帧打开动作面板,输入:mymc_mc.这时会弹出一个窗口,需要哪个指令选就是了.这些指令是按拼音顺序排列的.如果你能记住所需指令的前几个字母,你不妨直接输入,这时你会发现,很快就定位到了你所需要的指令.现在,我们把元件的名称改为mymc,不以_mc结尾,再到动作面板中输入,mymc.结果什么也没有发生,后面的指令只有自己输了,或者到左边窗口中去选.按钮元件和文本框也是相同的.你可以试一下.这一课我们认识了动作窗口,这是我们ActionScript编程的地方,通过对智能化的编窗口的认识,应该消除了我们对编程的恐惧,让我们树立了学好ActionScript编程的信心第二课_面向对象编程基础ActionScript是一种面向对象的编程语言.通常我们会认为编程就是连续地写一系列指令,计算机按顺序地执行它.而面向对象编程则是将程序分成各个块,分散到对象上.什么是对象?对象就是我们在flash中能看到的一切东西.舞台是一个对象,时间轴、影片剪辑、按钮、文本、位图都是对象.在第一课中我们己说过:在ActionScript2.0中我们可以将程序写在关键帧、影片剪辑、按钮元件上.即便是将程序完全写在关键帧上,它也必须要对象的事件驱动才能执行.在理解了面向对象编程后,我们必需要对一些概念有所了解.事实上我们在上面对对象己经有了一定的了解.就如同我们的家中,所有的东西都可以叫做对象.比如,电视机,电冰箱,书桌,衣柜等等.很容易发现,这些东西,总有那么几个都有相似之处.比如,电视机、电冰箱都需要用电;书桌、衣柜都是用木头做成的. 我们便把家里的东西分成了几类,并为每一类东西取上一个名字,比如,电器类、木器类等.这样我们就理解了另一个重要的概念一"类".类是某一类型对象的概括或者说是模板,在ActionScript中,所有对象都是由类定义的.每个类都包括了三个重要的元素:事件、属性、方法,这是我们必须要了解的三个重要概念.事件:在面向对象的编程中,并不是将程序按顺序交给计算机去执行,上面己经谈到了,程序被分散到了对象上.那么要计算机执行这些程序就需要事件来触发.通俗地讲就是:当某件事情发生时就去做一些事情.这个某件发生的事情就是事件.在flash中,常常会放上一个按钮,比如"开始"按钮.程序设计者可能是这样的思路:当按钮按下时就播放动画.那么"当按钮按下时"就是按钮对象的事件.在ActionScript2.O中,程序可以写在关键帧和元件上,事件在关健帧中和原件中的输写方法是不一样的.事件在关健帧中的写法:元件名称.事件名称 = function(){要执行的语句....}事件在元件上的写法:on(事件名称){要执行的语句.....}我们来做一个练习,在舞台上有一名为play_btn的按钮,现在要实现点击按钮动画就播放.新建flash文档,用椭园工具画一个园,然后,在40帧插入关健帧,将园移到另一位置,建立补间动画.新建一图层,从内部库中拖一个按钮到舞台上.打开属性面板,为按钮命名为play_btn.这里先介绍一个最常用的事件:release,这是当放开鼠标按键时触发.实际也就是完成了一个点击动作时发生.首先,在幀动作面板上写程序的方式完成练习:新建图层,命名为action,当这不是必须的,你完全可以给它取个其它名字.打开幀动作面板,输入: stop(); //这是让动画停止播放,以便让我们点击按钮时才播放.play_btn.onRelease = function(){play(); //让动画开始播放}测试影片,当点击按钮后,园形开始移动.回到场景中,可以看到,在action图层时间轴的第1幀上,有一个a字,这说明在这一幀上有程序.下面用在元件上写程序的方式来完成练习:将幀动作除第一行的stop();外其它的程序全部删除.然后,在按钮元件上点右键,点击"动作",打开动作面板,输入如下代码:On(replease){Play();}测试影片,得到相同的效果.属性:对象的属性可以理解为对象的特性,比如,大小,位置,颜色等.属性的输写规则是:对象名称.属性名称=值;下面介绍几个最常用的属性:_x,_y:分别是对象在舞上台的x,y坐标,这两个属性可以确定对象在舞台上的位置._xscale,_yscale:分别是对象在舞台上沿x,y轴方向的缩放比例,实际上就是宽和高的缩放比例,以百分比表示,例如:my_mc._xscale = 50; //这表示,元件my_mc的宽度缩小到原来的50%._alpha:这是对象的透明度,取值为0-100._rotation:这是对象的旋转度,以角度为单位._visible:为是对象是否可见,可设置两个值,true(或1)和false(或0).比如要设置元件my_mc 在舞台上不可见,可用:my_mc._visible = false; 或my_mc._visible = 0;相反要设置它在舞台上可见则用:my_mc._visible = true; 或my_mc._visible = 1;函数:你可能要问,属性介绍完了该介绍方法了,你怎么介绍起函数来了?原因很简单,方法也是函数.将函数附加到对象时,它就被称为方法.什么是函数呢?将完成一个任务的若干语句封装起来,就叫函数.也许用例子来说明会好理解一些.比如,要完成一个开电视的任务,可能需要很多步骤,插上电源,开机,选频道,设置音量.我们将这些步骤封装起来,并给它取个名字"开电视"这就创建了一个开电视的函数.在ActionScript2.O中创建函数的格式是:function 函数名称(){要执行的语句;.....}比如要创建上面开电视函数,就这样写:function 开电视(){插电源;开机;选频道;设音量;}函数创建以后,要调用这个函数只需:函数名()即可,比如我们要执行开电视的任务,只需输入:开电视();练习一下,我们来创建一个函数,然后调用它.打开第一帧的动作面板,输入:function test(){trace("我会写函数了");}test();测试影片,在输出面板中,会出现"我会写函数了"几个字.这个练习我们首先创建了一个叫test的函数,然后用test();调用了它.有时会有这样的情况,在函数内的语句中要用到数据,在创建函数的时候,却不能确定这些数据,比如每次调用会用不同的数据.这时就会用到参数,调用时,通过参数将数据传递给函数.格式如下: 创建函数的格式:function 函数名称(参数1,参数2,…){要执行的语句}调用函数的格式:函数名称(值1,值2,…);还是以开电视为例:创建开电视函数:function 开电视(频道,音量){插电源;开机;选频道=频道;设音量=音量;}调用函数:开电视(12,28);调用后,电视打开,并将频道设为12,音量设为28.练习:在帧动作面板中输入:functiontest(a,b){c=a+b;trace(c);}test(3,5);测试影片,输出面板中应显示 8 .了解了函数后,再来说方法就简单多了.上面已经说过,将函数附加到对象,就称为方法.AS中内置了很多方法,对于这些方法,我们不需要去了解它执行了些什么语句,只需要知道它可以完成的任务就行了.我们可以用:对象名称.方法名称();的格式来调用这些方法.比如有一个my_mc的影片剪辑元件,我们可以调用它的一些方法:my_mc.stop();my_mc.startDrag();按钮:在交互式的动画制作中, 经常会用到按钮,比如我们会放上一个"播放"、"停止"、"重放"等按钮.有两种方式可以将按钮添加到舞台上,一种是从内部库中拖一个按钮到舞台上;另一种方法是自己创建一个按钮,这里主要介绍一下自己创建按钮的方法,因为常常有人会问:为什么我创建的按钮点击它时不起作用?这可能就是创建按钮时出了问题.现在点击"插入"菜单-"创建新元件",选择按钮,这时就进入按钮编辑窗口,可以看到,时间轴上只有4帧,分别是:弹起,指针经过,按下,点击.特别要注意的是,点击那一帧,这一帧是点击的范围,因此这一帧是必须的,而且要注意的是,如果你的按钮是纯文字的,如Play,那么在这一幀应该画一个矩型,作为点击范围,不然,用户就只有点击到文字的笔划上才能触发按钮事件.在按钮编辑窗口中同样可以有很多层,比如第一层为图形,第二层为文字等.下面来制作一个按钮:点击“插入”-“新建元件”,选择按钮,确定,这样就进入元件编辑窗口。