flash经典代码.doc_第1页
flash经典代码.doc_第2页
flash经典代码.doc_第3页
flash经典代码.doc_第4页
flash经典代码.doc_第5页
免费预览已结束,剩余10页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

说明:有些代码是我们经常用到的,用得久了就会形成一种固有的模式,我特地把这些代码整理出来,供大学做为学习和使用的参考。这些代码有些是自己长期积累所得,有些是从网上得来的,还有一些是从所看到的书籍上摘示而来,最后全经过我的整理,希望这些东西能给爱好代码的人以启迪,如果这些简单的东西真的能给您带来方便,也就是UU的最大满足了。天地UUAction Script经典代码(1)天地悠悠说明:在编写Action Script动画过程中,我们常常发现有些效果是反复使用的,又有一些效果被高手们封装成函数,只要我们留心,就会发现这类代码其实是很多的,为此我将常见的经典代码收集起来,公诸于众,方便大家参考、使用。1交换两个变量的值var a = 3;var b = 5;var t;t = a;a = b;b = t;delete t;trace(a);trace(b);分析:变量a与变量b都已被赋值,如同两个水桶中全盛放着水,如果让其直接交换而写成a = b; b = a; 则是不可以的,而变量t则如同一个空桶,只有把a的值传给t以后(也就是把a桶中的水倒入空桶t),才能进行交换,因为a已把值传递给了t,这时再把b的值传给a,最后再把t 的值(为3)传给b,这样a、b的值才能成功交换。此时t的值还占据着内在空间,我们用delete t;这个语句将其删除,这才是一个负责任的代码。Action Script经典代码(2)天地悠悠2双向控制按钮(1)打开Flash8.0,新建一个Flash文档。(2)新建一个影片剪辑元件,制作一个简单的动画。(3)从库中把元件拖曳到“图层1”的第1帧上,实例名为“mc”。再从公用库中拖曳一个按钮到“图层2”的第1帧,与图层1的“mc”摆好位置。(4)新建一个图层3,单击第1帧,打开动作面板,输入下列代码:var mcCon:Boolean = false;(5)选中按钮,打开“动作”面板,输入代码:on(release)if(mcCon)mc.play();elsemc.stop();mcCon = !mcCon;trace(mcCon);(6)测试影片,保存文件。分析:按钮中的代码用了一个条件判断语句,其中小括号“()”中mcCon是条件,为真时执行大括号“”中的代码mc.play();如果条件为假时执行else后面的大括号中的代码mc.stop();“!”的作用是逻辑值取反,每单击一次按钮,让mcCon变成相反的布尔值。Action Script经典代码(3)天地悠悠3设置影片剪辑实例处于舞台的中心第一种情况:影片剪辑实例的注册点在元件的中心点上(1)打开Flash8.0,然后选择绘制矩形工具,绘制一个100100的正方形,之后按下F8将其转换为元件,名称为“img”注册点选中左上角(图1)。最后在属性面板中给其实例命名为“img”。此主题相关图片如下:(图1)(2)新建一个图层,然后选择绘制椭圆工具,绘制一个5050的正圆,之后按下F8将其转换为元件,名称为“mc”,注册点选中正中。最后在属性面板中给其实例命名为“mc”.(3)新建一个图层3,选中第1帧,然后打开“动作”面板,添加下列代码。mc._x = Stage.width/2;mc._y = Stage.height/2;/以上是设置当注册点在元件中心时的实例处于舞台中央img._x = (Stage.width - img._width)/2;img._y = (Stage.height - img._height)/2;/以上是设置当注册点在元件左上角时的实例处于舞台中央分析:Stage.width是舞台宽度的意思,Stage.height是舞台高度的意思,第一段代码(1、2行)的好处就在于,无论你的舞台设置有多大,mc总是能处在舞台的中央。第二段代码(4、5行)是这样得来的:我们知道,舞台的中心坐标是场景宽和高的一半,为(Stage.width/2,Stage.height/2),而实例的注册点在场景中心的左上角,所以注册点的X坐标是(舞台宽度实例宽度)2,Y坐标是(舞台高度实例高度)2。这一点就好理解了吧?Action Script经典代码(4)天地悠悠 4两种获取1与-1随机值的方法 第一种方法:打开Flash8.0,然后选用文本工具,动态文本,在舞台上拉出一个文本框,给其变量名为“a”,然后从公用库中拉出一个按钮拖曳到舞台适当位置上,选中按钮,打开动作面板,在上面添加下列指令。on (press) a = Math.pow(-1, random(2);分析:Math类中的pow()方法是计算x的y次方,利用这个方法就可以取得1或-1的随机值。Random(2)的返回值是0或1的随机值,这样-1的0次方为1(任何数的0次方都是1,这是数学常识啊),而-1的1次方为-1。 第二种方法:打开Flash8.0,然后选用文本工具,动态文本,在舞台上拉出一个文本框,给其变量名为“r”,然后从公用库中拉出一个按钮拖曳到舞台适当位置上,选中按钮,打开动作面板,在上面添加下列指令。on (press) r = random(2);(r = 0) ? r=-1 : r=r;分析:当键按下时,r值为0或者1,但随后就使用了一个判断表达式,如果为0就让其返回值为1,第三行的句子与if判断是一样的,不过更简明,当然第一种方法是最为好用的,第二种方法如果你不能理解,可换成if判断如下:on (press) r = random(2);if(r = 0) r = -1 ; else r = r;Action Script经典代码(5)天地悠悠5计算元件抵达舞台边缘的坐标要制作动态效果,舞台中实例的坐标不能落在场景之外,因为Flash动画效果只显示主场景部分,如果让实例在舞台内随机运动,实例最左、最右、最上和最下的位置如下图所示。此主题相关图片如下:实例mc的边缘位置 若计算其x坐标,根据上图可以得出:x1 = 实例宽度2;/实例在舞台最左边的坐标x2 = 舞台宽度 实例宽度2;/实例在舞台最右边的坐标当然求其y坐标也是这个道理了。用代码表示如下:Left_x = mc._width/2;Right_x = Stage.width - mc._width/2;Top_y = mc._height/2;Bottom_y = Stage.height mc._height/2;分析:以上的算法当然是指mc的注册点在mc中心,如果其注册点在元件的左上角(外部导入的图片等注册点常常是在左上角的),可找成下式:Left_x = 0;Right_x = Stage.width - mc._width;Top_y = 0;Bottom_y = Stage.height - mc._height;不信您试试!Action Script经典代码(6)天地悠悠6匀速斜线运动第一步:打开Flash8.0,设置舞台大小为400300第二步:在图层1的帧1上画一个正圆形,按F8将其转换成影片剪辑元件,并将其坐标设为(0,0),也就是放在舞台的左上角位置上,在“属性”面板中设置实例名为mc。第三步:新增一个名为AS的图层,插入3个空白关键帧,打开“动作”面板,分别在三个关键帧中加入下列指令:第1帧:var start = x:mc._x,y:mc._y;var end = x:Stage.width,y:Stage.height;var dx = (end.x - start.x)/60;var dy = (end.y - start.y)/60;第2帧:mc._x += dx;mc._y += dy;第3帧:gotoAndPlay(2);第四步:测试影片,可以看到实例沿直线不断运动,如下图所示:此主题相关图片如下:分析:第1帧的1、2两行分别定义一个对象用于存放起点和终点坐标;第3、4两行是在计算移动的距离(也就是步长变量)。第2帧分别设定在x与y方向上每次移动的距离。第3帧是跳转到第2帧并播放,这样第2帧的程序才能不断被执行,数据不断地被更新,mc不断地移动。Action Script经典代码(7)天地悠悠7缓冲公式第一步:打开Flash8.0,设置舞台大小为400300第二步:在图层1的帧1上画一个正圆形,按F8将其转换成影片剪辑元件,并将其坐标设为(0,0),也就是放在舞台的左上角位置上,在“属性”面板中设置实例名为mc。第三步:新增一个名为AS的图层,插入3个空白关键帧,打开“动作”面板,分别在三个关键帧中加入下列指令:第1帧:var end = x:Stage.width,y:Stage.height;var speed = 10;第2帧:var dx = (end.x - mc._x)/speed;var dy = (end.y - mc._y)/speed;mc._x += dx;mc._y += dy;第3帧:gotoAndPlay(2);第四步:测试影片,可以看到实例做匀减速运动,最所慢慢地停止在终点。分析:在此例中,计算步长变量的方式如下:var dx = (end.x - mc._x)/speed;代码中,由于mc._x是不断变化的,所以计算出来的步长也不断变化,越近终点,mc._x与end.x的差值越小,计算出来的距离越小,所以mc越近终点,速度就越慢了,做匀减速运动。上面的就是最简单的匀减速缓冲公式,可以这样表示:步长 (终点坐标 实例坐标)速度;实例坐标 步长;也可以写成:实例坐标 (终点坐标 实例坐标)速度;这个公式不仅用于直线运动,用于影片剪辑的透明度,旋转角,缩放等也会产生一种慢慢的变化。Action Script经典代码(9)天地悠悠9计算鼠标指针的当前位置到舞台中心的角度第一步:打开Flash8.0,舞台大小设定为400300,颜色任意,然后在舞台上用直线工具绘制一个“十”字交叉线,使交叉点处于舞台中心。第二步:新建一个图层,打开第1帧,在里面输入以下代码:var y = _ymouse - Stage.height/2;var x = _xmouse - Stage.width/2;var angle = Math.atan2(y,x);trace(a = angle*180/Math.PI)第三步:在两个图层的第2帧上分别按下F5,扩展一帧。第四步:测试,就会发现处于舞台下方的输出面板不断输也鼠标与舞台中心的相对角度。分析:这段代码的第三段是个关键,Math.atan2是反三角函数中的把正切,我们知道,在平面直角坐标系中,y/x是正切值,而反正切就是根据正切值而返回弧度,而当我们使用trace动作时,又利用了角弧互换公式把弧度转成了角度,所以输出面板中显示的就是我们常规上的角度了。明白了是吗?为了使大家更明白,舞台上我特地设了一个箭头来说明,但这个箭头其实在代码中是不存在的,如果你也想出现这种效果的话,就在舞台上放一个箭头MC,其注册点在箭头的最根部(箭头是指向右方的,在最左方),然后选中这个箭头,打开动作面板,添加下边代码:onClipEvent(enterFrame)this._rotation = _root.a;Action Script经典代码(10)天地悠悠10设置影片剪辑属性的最好办法请看下面一段代码:第1帧:var x = 0;第2帧:x+=10;mc._x = x;第3帧:gotoAndPlay(2);分析:这一段代码其实再简单不过了,但这里面却有一个玄妙,请您注意第2帧的代码,在一般情况下我们可能这样来设置:第2帧:mc._x += 10;从简洁的角度来看,这个句子恐怕比我以上所给的代码更好,但在程序的运行进却有道理可言。当进行设置影片剪辑的属性时,最好不要进行直接设置,最好的办法是用一个变量来记录x坐标,再用这个变量的值来设置影片剪辑的属性,这样做的好处是不用获取mc的x坐标,计算速度快,而且通过变量计算的x坐标也更准确,当然不仅设置坐标属性是这样,其它属性也是相同的道理。Action Script经典代码(11)天地悠悠11基本的自定义函数设想:我们只想做一个帧跳转命令的动画,这样的动画其实只要下达一个goto的指令就可以完成,但从函数的角度,却可以将其写成标准的函数代码,我们借此来理解函数的定义和用法。第一步:打开Flash8.0,创建一个新文档。第二步:按下Ctrl+F8,创建一个影片剪辑元件,要求剪辑是一个含有20帧以上的动画,然后从库中把此元件拖曳到地场景中来,实例名为mc。第三步:在主场景中新增一层,单击此层第1帧,打开“动作”面板,输入下列代码:function mcToFrame(obj:MovieClip,frameNum:Number)obj.gotoAndStop(frameNum);mcToFrame(mc,10);分析:此函数名为mcToFrame,需要两个参数,第一个参数obj是一个数据类型为MovieClip的变量,用来存放影片剪辑的实例名。第二个参数frameNum是一个数据类型为Number的变量,用来存放要跳转的帧数。代码的最后一行是调用函数的。函数定义的方式是:function 函数名(形参1,形参2,形参3形参N)指令();其中的形参全由变量来充当,而指令一般都与参数有着关联。函数调用的方式是:函数名(实参1,实参2,实参3实参N);其中的实参应该是合乎形参数据类型具体的值。以上的代码其实只用mc.gotoAndPlay(10);就可以完成了,为什么要费这么大的气力来写成一个函数呢?因为一个好的函数,可以重复使用,适用范围广。例如上面的影片如果被我们复制出来i个,我们要指定它们全停止在i帧,就可以这样来调用了:mcToFrame(this“mc”+i,i);这样就比你一个个地给复制出来的实例下达指令方便快捷得多了。Action Script经典代码(12)天地悠悠12获取按键代码按键代码共有两类,一类是Ascii码。英文全称: American Standard Code for Information Interchange 中文译名: 美国信息交换标准码,ASCII码。它是美国标准协会向国际标准化组织建议的一种控制字符和图形字符的标准代码。它由7位数据码和1位奇偶校验码组成,供数据处理、通信系统和相应设备之间的信息交换使用。另一类就是Code代码,被人们称为虚拟代码。以上两种代码在使用上功能是完全相同的,如果我们需要而又无书可查时,就可以下的办法得到它们。第一步:打开Flash8.0,任意创建一个电影剪辑元件,将元件拖曳到舞台的任意位置。第二步:利用文本工具,选择动态文本类型,在舞台的适当位置拉出两个文本框,其变量名分别为“Ascii”和“Code”(取其它名也可以)。第三步:选中影片剪辑元件,打开“动作”面板,添加代码:onClipEvent(keyUp)_root.Ascii = Number(Key.getAscii();_root.Code = Key.getCode();第三步:按下Ctrl+Enter测试,按任意键,就可以从舞台的文本区中看到相应的键值。分析:ASCII码与Code码是我们在制作交互动画需要用户用键盘操作时经常用到的代码,二者只是编码不同,使用起来是相同的。通过以上的方式我们就可以制作一些小游戏,比如打字游戏,用方向键控制场景中物体的移动等。Action Script经典代码(13)天地悠悠13水平拖动条常看到别人的动画中有一个拖动条,用这个条可以控制MP3播放器中的音量等,怎么能制作出来呢,下面我们就讲一讲它的原理。第一步:打开Flash8.0,创建一个新文件。第二步:在主场景中创建一个实例名为mc的影片剪辑实例。第三步:在主场景中用直线工具画一条长100像素的水平线。然后新建一层,创建一个按钮实例,让这个按钮正好“压”在水平线的左端。选中按钮实例,打开“动作”面板,输入下列代码:on(press)startDrag(this,false,L,T,R,B);on(release, dragOut)stopDrag();第四步:选中主场景中的按钮,按下F8将它转换为影片剪辑元件,选中这个影片剪辑元件实例,打开“动作”面板,添加代码:onClipEvent(load)T = B = _y;L = _x;R = _x + 100;onClipEvent(enterFrame)_parent.mc._x = (_x - 80)*4;第四步:按下Ctrl+Enter测试,成功后保存文件。分析:这个效果我们是分两步来完成的,第一步是在按钮上下达指令,主要是让按钮可以被拖动和停止拖动。其中的手动指令的后四个参数是在界定按钮被拖动的范围,但这个范围却没有在按钮中给定,一会儿我们到它的父级影片剪辑中去全限制,而其中的第二个参数选false与true是没什么大关系的,只是在拖动时是拖动其中心还是其它地方也可的问题。但停止拖动的触发事件却多加了一个dragOut,其目的是为了即使我们在按钮之外松开鼠标也就停止拖动。接下来的就好理解了,我们在影片的load事件中规定了按钮被拖动的范围,其中的第1行T = B = _y意思就是只能在影片剪辑的Y轴上拖动,且二者相等,不就是不许上下移动吗?最后规定了其最左端从剪辑的最左端开始,最右端以剪辑最左+100处结束,而我们在主场景中所画的水平线不也恰恰是100像素长吗?Action Script经典代码(14)天地悠悠14获取复制后的影片剪辑实例的层级和实例名常常在使用了复制命令以后,我们利用数组存取符来动态地设置实例的名称,我们也知道影片的复制常常是有层级的,一般说来数字越大,层级越高,那么我们如何来显示出这动态的实例名和层级呢,请按以下方法来操作。第一步:打开Flash8.0,建立一个新文件。第二步:用矩形工具在舞台上绘制一个正方形,按后将其转换成影片剪辑元件,给其实例命名为mc。双击这个正方形,进入到它的编辑状态,然后用文本工具,选择动态文本,在矩形之上拉出一个文本框,变量名为name,接着还是用动态文本在矩形的下方再拉出一个文本框,变量名为depth。如图1所示。(图1)第三步:回到场景1中来,新建一个图层,打开第1帧,然后添加以下代码:for(var i = 1;i=10;i+)duplicateMovieClip(mc0,mc+i,i);thismc+i._x = mc0._x+mc0._width*i;thismc+ = thismc+i._name;thismc+i.depth = thismc+i.getDepth(); = mc0._name;mc0.depth = mc0.getDepth();分析:这一段代码的第2第3行是复制影片并设置其横向排列。第4行就是获取影片的实例名;第5行则是获取其深度。代码块之外的两行是在获取被复制的mc0的名称与深度。我们可以得出一个结论,我们手绘的实例在场景中的深度原来处于-16383层上,而查资料的结论最高层应该是2130690045层。Action Script经典代码(15)天地悠悠15Trace的超级应用在编写Action Script时,我们常常用trace动作来检查自己所设置的数据是不是正确,尤其代码写得很多时,一个一个地去查感到很费力,这时我们就使用trace动作来检查错误到底出现在什么地方了。Flash MX2004中,使用了trace动作之后,在测试动画时,会出现一个输出窗口,把我们需要检查的数据输出出来,但升级到8.0版之后,这个输出窗口不见了,原来出现在系统的下边了,如图1所示。(图1)一般情况下,这个指令我们是这样使用的,打开Flash8.0软件,直接在第1帧中加入下面的指令:var a = 1;var b = 2;var c = 3;trace(a);trace(b);trace(c);测试一下吧,就会出现竖起排列的1 2 3三个数字了。第一种情形:我想使跟踪的变量更加明确。你可以把上面的代码修改成下面这样:var a = 1;var b = 2;var c = 3;trace(a=+a);trace(b=+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论