发新话题
打印

flash专栏

本主题由 夜飞鹰 于 2006-9-12 07:20 设置高亮

flash专栏

用Flash制作闪电效果 在Flash动画中逼真地模拟出自然界的景象对新手来说有一定难度,涉及到创意及制作经验。 制作原理 利用ActionScript复制一小段一小段的线段并连接形成闪电。在开始的时候利用随机函数设置闪电的位置。再配合背景的明暗变换,达到逼真的效果。 制作步骤 1.打开Flash,新建一个550×400的文件,背景色为黑色。 2.Insert symbol新建元件命名为“线条”,在工具栏上选择Rectagle tool,并且将Stroke color设为无,fill color白色,画一个矩形。 3.Windows→panels→align打开align面板,设置矩形居中对齐。在工具栏上选择Arrow tool,用鼠标选中这个矩形 ,Windows→panels→fill打开fill面板,在下拉菜单中选择Liner gradient(线形渐变),在出现的滑动杆上可以设置渐变的颜色,如图1即由蓝色到白色再到透明的渐变色 4.这里有一个小技巧就是如何设置颜色为透明,Windows→panels→mixer打开Mixer面板,选择填充色Fill color,在面板的右边有R、G、B、Alpha四个下拉框,拖动alpha框的下拉条就可以调整颜色的透明度,将Alpha值设置为0%就是完全透明的了(图2)。 5.新建一个元件,命名为“线条动画”,从library中拖动“线条”元件到layer 1,在第一、三、四、五、六、七、十一帧建立关键帧(Insert keyframe),鼠标单击第一帧,Windows→panels→effect打开Effect面板,设置Alpha值为0%,单击第三帧,设置Alpha值为100%,单击第四帧,设置Alpha值为80%,单击第五帧,设置Alpha值为100%,单击第六帧,设置Alpha值为80%,单击第七帧,设置Alpha值为100%,单击第十一帧,设置Alpha值为0%。鼠标右键单击第一帧,在弹出的菜单中选择Creat motion tween,建立motion动画,同样的方法在第七帧与十一帧之间建立Motion动画(图3)。 6.新建元件命名为“背景”,在工具栏上选择Rectagle tool,Fill color为白色,绘制一个矩形,Windows→panels→info打开Info面板,设置宽为550,高为400。在Align面板上设置居中对齐。 7.回到Scene1,从library中拖动“背景”元件到Layer1,在第一、五、六、七、十帧建立关键帧。鼠标单击第一帧,Windows→panels→effect打开effect面板,设置alpha值为0%,单击第五帧,设置alpha值为20%,单击第六帧,设置alpha值为0%,单击第七帧,设置alpha值为20%,单击第十帧,设置alpha值为0%。右键单击从第七帧到第十帧之间的任意一帧,在弹出的菜单中选择Creat motion tween,建立motion动画(如图4)。 8.新建一层Layer 2,从Library中拖动“线条动画”元件到layer 2,Windows→panels→instance弹出Instance面板,设置Name属性为:toto。 9.新建一层Layer 3,双击第一帧,在弹出的Frame action面板中输入如下ActionScript: I = 1; //设置变量 setProperty ("toto", _visible, 0); //设置name属性为toto的movieclip不可见。这是为了防止让别人看到复制的原形而影响效果所采取的手段 X = 100+Number(random(300)) ; //设置随机数,得到一个变量x,为x坐标,加上100是为了防止x坐标过小,而导致闪电不在屏幕内。 Max = random(350); //取随机数,max 为复制movieclip的个数,这样取得随机数后,则每次复制的movieclip个数不定,表现出来的效果就是闪电的长短不一。 Inspiration = random(3)-1; 在第二帧新建关键帧,双击第二帧,在弹出的frame action面板中输入如下actionscript: while (Number(I) //当I小于max时执行以下actionscript I = Number(I)+1; //一个变量,用来决定每个复制出的movieclip的偏移量 //执行actionscript的次数 duplicateMovieClip ("Toto", "Toto" add I, I); //复制名称为toto的movieclip setProperty ("Toto" add I, _y, I); //设置复制出的movieclip的y坐标值 Trajectoire = Number(random(5)-2)+Number(Inspiration); X = Number(X)+Number(trajectoire); //得到复制出的movieclip的x轴坐标,并且每一个x坐标都会有偏移量 setProperty ("Toto" add I, _x, X); setProperty ("Toto" add I, _xscale, I-Max); } //设置复制出的movieclip的x轴坐标与变形 while (Number(I)<350) { I = Number(I)+1; removeMovieClip ("Toto" add I); } //移除复制出的movieclip,使闪电有逐渐消失的效果。 本例效果:http://www.5dmedia.com/users/pcking/light.html 本例源文件:http://www.5dmedia.com/users/pcking/light.fla

TOP

flash专栏

如何在邮件中使用flash动画
      
      在网上你会看到许多漂亮的Flash动画,如果想要向朋友推荐这个Flash,而网站本身又没有提供发送功能的话,那就只能自己写邮件告诉他(她)了。最简单的方法当然是将该网页的网址直接发送给朋友,稍微“专业”一点就可以查看网页源代码,“揪”出Flash文件的绝对地址发送给对方,这样就可让对方全屏观看了。但如果我们还想与众不同一点呢?那就直接把Flash嵌入到邮件中吧,让对方一打开邮件就能直接看到你的心意了。漂亮动感的Flash一定让你在朋友面前好好的Show一下!
      要在邮件中使用Flash,首先要找到一个支持HTML邮件编辑和发送的邮件程序,或提供HTML源码支持的WebMail。如果是用邮件程序,主流的邮件程序如Foxmail和Outlook都支持发送网页或导入网页发送。
      虽然两个软件都不支持Flash的直接发送,但并不说明在邮件中不能使用Flash,只是在用网页编辑工具“写”邮件时,将Flash文件的地址设置成网络绝对地址,就可以保证在对方收信浏览时也能正常阅读了。然后再使用邮件程序的相关功能将网页导入作为邮件就OK。具体过程在两个程序中略有不同,在此不详谈。
      使用WebMail稍微麻烦点,要啃源代码哦。而且支持HTML源代码的WebMail也不多,笔者仅发现ChinaRen的WebMail支持。不过在网吧上网的读者却不在少数,习惯使用WebMail更是占大多数,为了照顾这些朋友,下面是一个通过编辑HTML源码实现在邮件中嵌入Flash的实例过程。(如图是单独发送的一个Flash
      MV──“台北圣诞夜”)。
      因为使用的是网址引用,Flash本身并不打包进邮件,对邮件的大小几乎没有什么影响。在WebMail的邮件编辑器中切换到源码模式,在相应位置增加以下几行代码:
      从上面可以看出,这其实就是在网页中使用Flash控件的简化代码。首先要找出这个Flash文件的绝对地址。现在我们查看这个Flash所在网页的源代码,再使用抠“.swf”文件的方法,逐个试探出你所需的Flash的绝对地址。至于上面这长长的一串源码,咱们也可以偷个懒,这里告诉你一个捷径:在Flash地址的附近就是Flash控件的代码,将它们都复制出来吧。然后将相对地址换成绝对地址,再把长、宽改成在邮件中合适的大小(width="400"表示宽,
      height="300"表示高),这就OK了,预览一下,还可以吧?不行的话再作调整。
      看到以前用WebMail写出来的邮件都是灰头土脸的,现在突然“有声有色”起来,高兴之余也不禁感叹,硬件的发展跟不上软件,而软件的更新也总是只能跟着新技术跑,超文本邮件才开始时兴起来,我们却又为将Flash这一网络新时尚使用到我们的邮件中而奔波了。正是通过这种技术与时尚需求的不断螺旋发展,e时代似乎与我们越来越贴近了,我们的e生活也越来越显得美丽动人。

TOP

flash专栏

Flash MX常用ActionScript速查手册
      
      ActionScript是Flash的脚本语言,是一种面向对象编程语言。使用ActionScript可以控制Flash动画中的对象,创建导航元素和交互元素,扩展Flash创作交互动画和网络应用的能力。本文主要介绍Flash
      MX中最常用到的ActionScript集合。
      一、动作
      动作部分的Action是用来控制影片播放状态的脚本集合。以利于Flash脚本编写人员速查。
      (一)影片控制
      1.goto
      语法:gotoAndPlay(scene, frame)
      参数:scene 播放头将转到场景的名称。frame 播放头将转到的帧的编号或标签。
      描述:动作;将播放头转到场景中指定的帧并从该帧开始播放。如果未指定场景,则播放头将转到当前场景中的指定帧。
      2.on
      语法:on(mouseEvent) {statement(s);}
      参数: statement(s)是指发生mouseEvent时要执行的指令。
      mouseEvent是“事件”触发器。当发生此事件时,执行事件后面花括号中的语句。可为mouseEvent参数指定下面的任何值:
      press在鼠标指针经过按钮时按下鼠标;release在鼠标指针经过按钮时释放鼠标按钮;releaseOutside当鼠标指针在按钮之内时按下按钮后,将鼠标指针移到按钮之外,此时释放鼠标;rollOut鼠标指针移出按钮区域;rollOver;鼠标指针滑过按钮;dragOut在鼠标指针滑过按钮时按下鼠标,然后滑出此按钮区域;dragOver在鼠标指针移过按钮时按下鼠标,然后移出此按钮,再移回此按钮;keyPress(key)按下指定的key。此参数的key部分可使用Flash“键盘键和键控代码值”中所列的任何键控代码进行指定,或者使用Key对象的属性摘要中列出的任何键常量进行指定。
      描述:事件处理函数;指定触发动作的鼠标事件或按键事件。
      3.play
      语法:play()
      描述:动作;在时间轴中向前移动播放头。
      4.stop
      语法:stop
      描述:动作;停止当前正在播放的影片。此动作最通常的用法是用按钮控制影片剪辑。
      5.stopAllSounds
      语法:stopAllSounds()
      描述:动作;在不停止播放头的情况下停止影片中当前正在播放的所有声音。设置到流的声音在播放头移过它们所在的帧时将恢复播放。

TOP

flash专栏

(二)浏览器/网络
      该部分的Action是Flash MX用来与影片或外部文件进行交互操作的脚本集合。
      1.fsCommand
      语法:fscommand(″command″, ″parameters″)
      参数:command。parameters均是一个传递给宿主应用程序用于任何用途的字符串;或者一个传递给Flash Player的值。
      描述:动作;使Flash影片能够与Flash Player或承载Flash
      Player的程序(如Web浏览器)进行通讯。还可使用fsCommand动作将消息传递给Director,或者传递给VB、VC++和其他可承载ActiveX控件的程序。
      2.getURL
      语法:getURL(url [, window [, ″variables″]])
      参数:url可从该处获取文档的URL。
      window一个可选参数,指定文档应加载到其中的窗口或HTML框架。你可输入特定窗口的名称,或从下面的保留目标名称中选择:_self指定当前窗口中的当前框架;_blank指定一个新窗口;_parent指定当前框架的父级;_top指定当前窗口中的顶级框架;variables用于发送变量的GET或POST方法。如果没有变量,则省略此参数。GET方法将变量追加到URL的末尾,该方法用于发送少量变量。POST方法在单独的HTTP
      标头中发送变量,该方法用于发送长的变量字符串。
      描述:动作;将来自特定URL的文档加载到窗口中,或将变量传递到位于所定义URL的另一个应用程序。若要测试此动作,请确保要加载的文件位于指定的位置。若要使用绝对URL,则需要网络连接。
      3.loadMovie
      语法:loadMovie(″url″,level/target[, variables])
      参数:url要加载的SWF文件或JPEG文件的绝对或相对URL。
      target指向目标影片剪辑的路径。目标影片剪辑将替换为加载的影片或图像。只能指定target影片剪辑或目标影片的level这两者之一。
      level一个整数,指定Flash
      Player中影片将被加载到的级别。在将影片或图像加载到级别时,标准模式下“动作”面板中的loadMovie动作将切换为loadMovieNum;在专家模式下,必须指定loadMovieNum或从“动作”工具箱中选择它。
      variables一个可选参数,指定发送变量所使用的HTTP方法。该参数须是字符串GET或POST。
      描述:动作;在播放原始影片的同时将SWF或JPEG文件加载到Flash
      Player中。loadMovie动作使你可以同时显示几个影片,并且无需加载另一个HTML文档就可在影片之间切换。
      使用unloadMovie动作可删除使用loadMovie动作加载的影片。
      4.loadVariables
      语法:loadVariables (″url″ ,level/″target″[, variables])
      参数:url变量所处位置的绝对或相对URL。
      level指定Flash Player中接收这些变量的级别的整数。参数具体用法同loadmovie。
      target指向接收所加载变量的影片剪辑的目标路径。
      variables一个可选参数,指定发送变量所使用的HTTP方法。
      描述:动作;从外部文件(例如文本文件,或由CGI脚本、ASP、PHP脚本生成的文本)读取数据,并设置Flash Player
      级别或目标影片剪辑中变量的值。此动作还可用于使用新值更新活动影片中的变量。
      5.unloadMovie
      语法:unloadMovie[Num](level/″target″)
      参数:level加载影片的级别(_levelN)。从一个级别卸载影片时,在标准模式下,“动作”面板中的
      unloadMovie动作切换为unloadMovieNum;在专家模式下,必须指定unloadMovieNum,或者从“动作”工具箱中选择它。
      target影片剪辑的目标路径。
      描述:动作;从Flash Player中删除一个已加载的影片或影片剪辑。

TOP

flash专栏

(三)影片编辑控制
      1.duplicateMovieclip
      语法:duplicateMovieClip(target, newname,depth)
      参数:target要复制的影片剪辑的目标路径。
      newname复制的影片剪辑的唯一标识符。
      depth复制的影片剪辑的唯一深度级别。深度级别是复制的影片剪辑的堆叠顺序。这种堆叠顺序很像时间轴中图层的堆叠顺序;较低深度级别的影片剪辑隐藏在较高堆叠顺序的剪辑之下。必须为每个复制的影片剪辑分配一个唯一的深度级别,以防止它替换现有深度上的影片。
      描述:动作;当影片正在播放时,创建一个影片剪辑的实例。无论播放头在原始影片剪辑(或“父级”)中处于什么位置,复制的影片剪辑的播放头始终从第一帧开始。如果删除父影片剪辑,则复制的影片剪辑也被删除。
      2.onClipEvent
      语法:onClipEvent(movieEvent){
      statement(s);
      }
      参数:movieEvent是一个称作“事件”的触发器。当事件发生时,执行该事件后面花括号中的语句。可以为movieEvent参数指定下面的任何值:load影片剪辑一旦被实例化并出现在时间轴中时,即启动此动作。;unload在从时间轴中删除影片剪辑之后,此动作在第一帧中启动。处理与Unload影片剪辑事件关联的动作之前,不向受影响的帧附加任何动作;enterFrame以影片帧频不断地触发此动作。首先处理与enterFrame
      剪辑事件关联的动作,然后才处理附加到受影响帧的所有帧动作脚本;mouseMove每次移动鼠标时启动此动作。_xmouse和_ymouse属性用于确定当前鼠标位置;mouseDown当按下鼠标左键时启动此动作;mouseUp当释放鼠标左键时启动此动作;keyDown当按下某个键时启动此动作。使用Key.getCode方法获取最近按下的键的有关信息;keyUp当释放某个键时启动此动作。使用Key.getCode方法获取最近按下的键的有关信息;data当在loadVariables或loadMovie动作中接收数据时启动此动作。当与loadVariables动作一起指定时,data事件只发生一次,即加载最后一个变量时。当与loadMovie动作一起指定时,获取数据的每一部分时,data事件都重复发生。
      statement(s)发生mouseEvent时要执行的指令。
      描述:事件处理函数;触发为特定影片剪辑实例定义的动作。
      3.removeMovieClip
      语法:removeMovieClip(target)
      参数:target用duplicateMovieClip创建的影片剪辑实例的目标路径,或者用MovieClip对象的
      attachMovie或duplicateMovieClip方法创建的影片剪辑的实例名。
      描述:动作;删除用MovieClip对象的attachMovie或duplicateMovieClip方法创建的,或者用
      duplicateMovieClip动作创建的影片剪辑实例。
      4.setProperty
      语法:setProperty(″target″,property,value/expression)
      参数:target到要设置其属性的影片剪辑实例名称的路径。
      property要设置的属性。
      value属性的新文本值。
      expression计算结果为属性新值的公式。
      描述:动作;当影片播放时,更改影片剪辑的属性值。
      5.startDrag
      语法:startDrag(target,[lock ,left ,top ,right,bottom])
      参数:target要拖动的影片剪辑的目标路径。
      lock一个布尔值,指定可拖动影片剪辑是锁定到鼠标位置中央(true),还是锁定到用户首次点击该影片剪辑的位置上(false)。此参数是可选的。
      left、top、right、bottom相对于影片剪辑父级坐标的值,这些坐标指定该影片剪辑的约束矩形。这些参数是可选的。
      描述:动作;使target影片剪辑在影片播放过程中可拖动。一次只能拖动一个影片剪辑。执行startDrag动作后,影片剪辑将保持可拖动状态,直到被stopDrag动作明确停止为止,或者直到为其他影片剪辑调用了
      startDrag动作为止。
      6.stopDrag
      语法:stopDrag()
      描述:动作;停止当前的拖动操作。
      7.updateAfterEvent
      语法:updateAfterEvent()
      描述:动作;当在onClipEvent处理函数中调用它时,或作为传递给setInterval的函数或方法的一部分进行调用时,该动作更新显示(与为影片设置的每秒帧数无关)。如果对updateAfterEvent的调用不在
      onClipEvent处理函数中,也不是传递给setInterval的函数或方法的一部分,则Flash忽略该调用。

TOP

flash专栏

(四)变量
      该部分Action是Flash MX脚本语言中的变量及对应操作的脚本集合。
      1.delete
      语法:delete reference
      参数:reference要消除的变量或对象的名称。
      描述:运算符;销毁由reference参数指定的对象或变量,如果该对象被成功删除,则返回true;否则返回false值。
      2.set variable
      语法:set(variable,expression)
      参数:variable保存expression参数值的标识符;expression分配给变量的值。
      描述:动作;为变量赋值。variable是保存数据的容器。变量可以保存任何类型的数据(例如,字符串、数字、布尔值、对象或影片剪辑)。每个影片和影片剪辑的时间轴都有其自己的变量集,每个变量又都有其自己独立于其他时间轴上的变量的值。
      3.var
      语法:var variableName1 [= value1][...,variableNameN [=valueN]]
      参数:variableName标识符;value分配给变量的值。
      描述:动作;用于声明局部变量。如果在函数内声明局部变量,那么变量就是为该函数定义的,且在该函数调用结束时到期。如果变量不是在块({})内声明的,但使用call动作执行该动作列表,则该变量为局部变量,且在当前列表结束时到期。如果变量不是在块中声明的,且不使用call动作执行当前动作列表,则这些变量不是局部变量。
      4.with
      语法:with (object) {
      statement(s);
      }
      参数:object动作脚本对象或影片剪辑的实例;statement(s)花括号中包含的动作或一组动作。
      描述:动作;允许你使用object参数指定一个对象(比如影片剪辑),并使用statement(s)参数计算对象中的表达式和动作。这可以使你不必重复书写对象的名称或路径。

TOP

flash专栏

(五)条件/循环
      该部分Action是Flash MX脚本中如何操作影片逻辑的脚本集合。
      1.break
      语法:break
      描述:动作;出现在一个循环(for、for..in、do while或while
      循环)中,或者出现在与switch动作内特定case语句相关联的语句块中。break动作可命令Flash跳过循环体的其余部分,停止循环动作,并执行循环语句之后的语句。当使用break动作时,Flash解释程序会跳过该case块中的其余语句,转到包含它的
      switch动作后的第一个语句。使用break动作可跳出一系列嵌套的循环。
      2.case
      语法:case expression: statements
      参数:expression任何表达式;statements任何语句。
      描述:关键字;定义用于switch动作的条件。如果case关键字后的expression参数在使用全等(===)的情况下等于switch动作的expression参数,则执行statements参数中的语句。如果在switch语句外部使用case动作,则将产生错误,脚本不能编译。
      3.continue
      语法:continue
      描述:动作;出现在几种类型的循环语句中;它在每种类型的循环中的行为方式各不相同。
      在while循环中,continue可使Flash解释程序跳过循环体的其余部分,并转到循环的顶端(在该处进行条件测试)。在do
      while循环中,continue可使Flash解释程序跳过循环体的其余部分,并转到循环的底端(在该处进行条件测试)。在for循环中,continue可使Flash解释程序跳过循环体的其余部分,并转而计算for循环的后表达式(post-expression)。在for..in循环中,continue可使Flash解释程序跳过循环体的其余部分,并跳回循环的顶端(在该处处理下一个枚举值)。
      4.Default
      语法:default: statements
      参数:statements任何语句。
      描述:关键字;定义switch动作的默认情况。对于一个给定的switch动作,如果该switch动作的
      Expression参数与case关键字后面的任何一个Expression参数都不相等(使用全等),则执行这些语句。
      5.do while
      语法:do {
      statement(s)
      } while (condition)
      参数:condition要计算的条件。
      statement(s)只要condition参数计算结果为true就会执行的语句。
      描述:动作;执行语句,然后只要条件为true,就计算循环中的条件。
      6.else
      语法:else statement
      else {...statement(s)...}
      参数:ondition计算结果为true或false的表达式。
      statement(s)如果if语句中指定的条件为false,则运行的替代语句系列。
      描述:动作;指定当if语句中的条件返回false时要运行的语句。
      7.else if
      语法:if (condition){
      statement(s);
      } else if (condition){
      statement(s);
      }
      参数:condition计算结果为true或false的表达式。
      statement(s)如果if语句中指定的条件为false,则运行的替代语句系列。
      描述:动作;计算条件,并指定当初始if语句中的条件返回false时要运行的语句。如果else
      if条件返回true,则Flash解释程序运行该条件后面花括号({})中的语句。如果else
      if条件为false,则Flash跳过花括号中的语句,运行花括号之后的语句。在脚本中可以使用else if动作创建分支逻辑。
      8.for
      语法:for(init; condition; next) {
      statement(s);
      }
      参数:init一个在开始循环序列前要计算的表达式,通常为赋值表达式。此参数还允许使用Var语句。
      condition计算结果为true或false的表达式。在每次循环迭代前计算该条件;当条件的计算结果为false时退出循环。
      next一个在每次循环迭代后要计算的表达式;通常为使用递增或递减运算符的赋值表达式。
      statement(s)在循环体内要执行的指令。
      描述:动作;一种循环结构,首先计算init(初始化)表达式一次,只要condition的计算结果为true,则按照以下顺序开始循环序列,执行statement,然后计算next表达式。
      9.For..in
      语法:for(variableIterant in object){
      statement(s);
      }
      参数:variableIterant作为迭代变量的变量名,引用数组中对象或元素的每个属性。
      object要重复的对象的名称。
      statement(s)要为每次迭代执行的指令。
      描述:动作;循环通过数组中对象或元素的属性,并为对象的每个属性执行statement。
      10.if
      语法:if(condition) {
      statement(s);
      }
      参数:condition计算结果为true或false的表达式。
      statement(s)如果或当条件的计算结果为true时要执行的指令。
      描述:动作;对条件进行计算以确定影片中的下一步动作。如果条件为true,则Flash将运行条件后面花括号({})内的语句。如果条件为false,则Flash跳过花括号内的语句,运行花括号后面的语句。使用if动作可在脚本中创建分支逻辑。
      11.switch
      语法:switch (expression){
      caseClause:
      [defaultClause:]
      }
      参数:expression任意表达式。
      caseClause一个Case关键字,其后跟表达式、冒号和一组语句,如果在使用全等的情况下,此处的表达式与switch
      expression参数相匹配,则执行这组语句。
      defaultClause一个default关键字,其后跟着如果这些Case表达式都不与switch
expression参数全等匹配时要执行的语句。
      描述:动作;创建动作脚本语句的分支结构。像If动作一样,Switch 动作测试一个条件,并在条件返回true值时执行语句。
      12.while
      语法:while(condition) {
      statement(s);
      }
      参数:condition每次执行while动作时都要重新计算的表达式。如果该语句的计算结果为 true,则运行statement(s)。
      statement(s)条件的计算结果为true时要执行的代码。
      描述:动作;测试表达式,只要该表达式为true,就重复运行循环中的语句或语句序列。

TOP

flash专栏

(六)用户定义的函数
      该部分的Action可以通过用户自己组合开发更具灵活的程序脚本。
      1.call
      语法:call(frame)
      参数:frame时间轴中帧的标签或编号。
      描述:动作;执行被调用帧中的脚本,而不将播放头移动到该帧。一旦执行完该脚本,局部变量将不存在。
      2.call function
      语法:object.function([parameters])
      参数:object其中定义了函数的对象(可以是影片剪辑)。
      function指定用户定义的函数的标识符。
      parameters可选参数,指示函数所需的任何参数。
      描述:动作;允许你在标准模式下,使用“动作”面板中的参数字段来调用用户定义的函数。
      3.function
      语法:function functionname ([parameter0, parameter1,...parameterN]){
      statement(s)
      }
      function ([parameter0, parameter1,...parameterN]){
      statement(s)
      }
      参数:functionname新函数的名称。
      parameter一个标识符,表示要传递给函数的参数。这些参数是可选的。
      statement(s)为function的函数体定义的任何动作脚本指令。
      描述:你定义的用来执行特定任务的一组语句。可以在影片的一个地方“声明”或定义函数,然后从影片的其他脚本调用它。定义函数时,还可以为其指定参数。参数是函数要对其进行操作的值的占位符。每次调用函数时,可以向其传递不同的参数。这使你可以在不同场合重复使用一个函数。
      4.method
      语法:object.method = function ([parameters]) {
      ...body of function...
      };
      参数:object对象的标识符。
      method方法的标识符。
      parameters要传递给函数的参数。可选参数。
      描述:动作(仅限标准模式);用于在标准模式下使用“动作”面板来定义对象的方法。
      5.Return
      语法:return[expression]
      return
      参数:expression要作为函数值计算并返回的字符串、数字、数组或对象。此参数是可选的。
      返回值:如果提供了expression参数,则返回计算的结果。
      描述:动作;指定由函数返回的值。return动作计算expression并将结果作为它在其中执行的函数的值返回。return动作导致函数停止运行,并用返回值代替函数。如果单独使用return语句,它返回null。

TOP

flash专栏

二、函数
      函数是Flash MX中至关重要的部分,是完成复杂的程序操作的必要组合。
      (一)常用函数
      顾名思义,该部分的内容是介绍Flash MX中常用逻辑函数脚本集合。
      1.escape
      语法:escape(expression)
      参数:expression要转换为字符串并以URL编码格式进行编码的表达式。
      描述:函数;将参数转换为字符串,并以URL编码格式进行编码,在这种格式中,将所有非字母数字的字符都转义为十六进制序列。
      2.eval
      语法:eval(expression)
      参数:expression包含要获取的变量、属性、对象或影片剪辑的名称的字符串。
      描述:函数;按照名称访问变量、属性、对象或影片剪辑。如果expression是一个变量或属性,则返回该变量或属性的值。如果expression是一个对象或影片剪辑,则返回指向该对象或影片剪辑的引用。如果无法找到expression中指定的元素,则返回undefined。
      3.getProperty
      语法:getProperty(instancename , property)
      参数:instancename 要获取其属性的影片剪辑的实例名称。
      property影片剪辑的属性。
      描述:函数;返回影片剪辑instancename的指定property的值。
      4.getTimer
      语法:getTimer()
      描述:函数;返回自影片开始播放时起已经过的毫秒数。
      5.targetPath
      语法:targetpath(movieClipObject)
      参数:movieClipObject对要获取其目标路径的影片剪辑的引用(例如,_root或_parent)。
      描述:函数;返回包含movieClipObject的目标路径的字符串。此目标路径以点记号表示形式返回。若要获取以斜杠记号表示的目标路径,请使用_target属性。
      6.unescape
      语法:unescape(x)
      参数:x要转义的十六进制序列字符串。
      描述:顶级函数;将参数x作为字符串计算,将该字符串从URL编码格式(这种格式将所有十六进制序列转换为ASCII字符)进行解码,并返回该字符串。

TOP

flash专栏

(二)数学函数
      该部分的Action帮助开发人员完成程序中的数学运算。
      1.isFinite
      语法:isFinite(expression)
      参数:expression要计算的布尔表达式、变量表达式或其他表达式。
      描述:顶级函数;对expression进行计算,如果其为有限数,则返回true,如果为无穷大或负无穷大,则返回false。无穷大或负无穷大的出现指示有错误的数学条件,例如被0除。
      2.isNaN
      语法:isNaN(expression)
      参数:expression要计算的布尔表达式、变量表达式或其他表达式。
      描述:顶级函数;对参数进行计算,如果值不是数字(NaN),则返回true,指示存在数学错误。
      3.parseFloat
      语法:parseFloat(string)
      参数:string要读取并转换为浮点数的字符串。
      描述:函数;将字符串转换为浮点数。此函数读取(或“分析”)并返回字符串中的数字,直到它到达不是数字(其初始含义为数字)部分的字符。如果字符串不是以一个可以分析的数字开始的,则parseFloat返回NaN。有效整数前面的空白将被忽略,有效整数后面的非数值字符也将被忽略。
      4.parseInt
      语法:parseInt(expression, [radix])
      参数:expression转换为整数的字符串。
      radix表示要分析数字的基数(基)的整数。合法值为2~36。此参数是可选的。
      描述:函数;将字符串转换为整数。如果参数中指定的字符串不能转换为数字,则此函数返回NaN。以0开头的整数或指定基数为8的整数被解释为八进制数字。以0x开头的字符串被解释为十六进制数字。有效整数前面的空白将被忽略,有效整数后面的非数值字符也将被忽略。

TOP

flash专栏

(三)转换函数
      该部分的Action是Flash MX用来处理内容格式转换的脚本集合。
      1.Boolean(函数)
      语法:Boolean(expression)
      参数:expression一个可转换为布尔值的表达式。
      描述:函数;将参数expression转换为布尔值,并以如下形式返回值:如果expression是布尔值,则返回值为expression。如果expression是数字,则在该数字不为零时返回值为true,否则为false。如果expression是字符串,则调用toNumber方法,并且在该数字不为零时返回值为true,否则为false。如果expression未定义,则返回值为false。如果expression
      是影片剪辑或对象,则返回值为true。
      2.Number(函数)
      语法:Number(expression)
      参数:expression要转换为数字的表达式。
      描述:函数;将参数expression转换为数字并按如下规则返回一个值:
      如果expression为数字,则返回值为expression。如果expression为布尔值,当
      expression为true时,返回值为1;当expression为false时,返回值为0。如果expression
      为字符串,则该函数尝试将expression解析为一个带有可选尾随指数的十进制数字。如果expression为undefined,则返回值为0。
      3.String(函数)
      语法:String(expression)
      参数:expression要转换为字符串的表达式。
      描述:函数;返回指定参数的字符串表示形式,规则如下所示:
      如果expression为布尔值,则返回字符串为true或false。如果expression是数字,则返回的字符串为此数字的文本表示形式。如果expression为字符串,则返回的字符串是
      expression。如果expression是一个对象,则返回值为该对象的字符串表示形式,它是通过调用该对象的字符串属性而生成的,如果不存在此类属性,则通过调用Object.toString
      而生成。如果expression是一个影片剪辑,则返回值是以斜杠(/)记号表示的此影片剪辑的目标路径。如果expression为undefined,则返回值为空字符串()。

TOP

flash专栏

三、常量
      该部分的aAction罗列出Flash MX中常用的常量脚本集合。
      1.false
      语法:false
      描述:表示与true相反的唯一的布尔值。
      2.newline
      语法:newline
      描述:常量;插入一个回车符(),该回车符在动作脚本代码中插入一个空行。newline可用来为代码中的函数或动作所获取的信息留出空间。
      3.null
      语法:null
      描述:关键字;一个可以赋予变量或者可以在函数未提供数据时由函数返回的特殊值。可以使用null表示缺少的或者未定义数据类型的值。
      4.true
      语法:true
      描述:表示false相反的唯一布尔值。
      5.undefined
      语法:undefined
      描述:一个特殊值,通常用于指示变量尚未赋值。对未定义值的引用返回特殊值undefined。动作脚本代码typeof(undefined)
      返回字符串“undefined”。undefined类型的唯一值是 undefined。
      当将undefined转换为字符串时,它转换为空字符串。undefined值与特殊值null相似。事实上,当使用相等运算符对null和undefined进行比较时,它们的比较结果为相等。

TOP

flash专栏

四、属性
      用Flash MX制作或开发动画,其中必不可少的就是使用脚本定义所有movie的属性。
      1.MovieClip._alpha
      语法:myMovieClip._alpha
      描述:属性;设置或获取由MovieClip指定的影片剪辑的Alpha透明度(value)。有效值为0(完全透明)到100(完全不透明)。如果影片剪辑的_alpha设置为
      0,虽然其中的对象不可见,但也是活动的。
      2.MovieClip._currentframe
      语法:myMovieClip._currentframe
      描述:属性(只读);返回由MovieClip指定的时间轴中播放头所处的帧的编号。
      3.MovieClip._droptarget
      语法:myMovieClip._droptarget
      描述:属性(只读);以斜杠语法记号表示法返回MovieClip放置到的影片剪辑实例的绝对路径。_droptarget属性始终返回以斜杠(/)开始的路径。若要将实例的_droptarget属性与引用进行比较,请使用eval函数将返回值从斜杠语法转换为点语法表示的引用。
      4.MovieClip._focusrect
      语法:myMovieClip._focusrect
      描述:属性;一个布尔值,指定当影片剪辑具有键盘焦点时其周围是否有黄色矩形。该属性可以覆盖全局_focusrect属性。
      5.MovieClip._framesloaded
      语法:myMovieClip._framesloaded
      描述:属性(只读);从影片流中已经加载的帧数。该属性可确定特定帧及其前面所有帧的内容是否已经加载,并且是否可在浏览器本地使用。该属性对于监视大影片的下载过程很有用。
      6.MovieClip._height
      语法:myMovieClip._height
      描述:属性;以像素为单位设置和获取影片剪辑的高度。
      7.MovieClip._name
      语法:myMovieClip_name
      描述:属性;返回由MovieClip指定的影片剪辑的实例名称。
      8._quality
      语法:_quality
      描述:属性(全局);设置或获取用于影片的呈现品质。设备字体始终是带有锯齿的,因此不受_quality属性的影响。
      9.MovieClip._rotation
      语法:myMovieClip._rotation
      描述:属性;以度为单位指定影片剪辑的旋转。
      10._soundbuftime
      语法:_soundbuftime = integer
      参数:integer在影片开始进入流之前缓冲的秒数。
      描述:属性(全局);规定声音流缓冲的秒数。默认值为5秒。
      11.MovieClip._target
      语法:myMovieClip._target
      描述:属性(只读);返回MovieClip参数中指定的影片剪辑实例的目标路径。
      12.MovieClip._totalframes
      语法:myMovieClip._totalframes
      描述:属性(只读);返回MovieClip参数中指定的影片剪辑实例中的总帧数。
      13.MovieClip._url
      语法:myMovieClip._url
      描述:属性(只读);获取从中下载影片剪辑的SWF文件的URL。
      14.MovieClip._visible
      语法:MovieClip._visible
      描述:属性;一个布尔值,指示由MovieClip参数指定的影片是否可见。不可见的影片剪辑(_visible属性设置为false)处于禁用状态。例如,不能点击_visible属性设置为false
      的影片剪辑中的按钮。
      15.MovieClip._width
      语法:MovieClip._width
      描述:属性;以像素为单位设置和获取影片剪辑的宽度。
      16.MovieClip._x
      语法:MovieClip._x
      描述:属性;设置影片坐标的整数,该坐标相对于父级影片剪辑的本地坐标。如果影片剪辑在主时间轴中,则其坐标系统将舞台的左上角作为(0,
      0)。如果影片剪辑位于另一个具有变形的影片剪辑中,则该影片剪辑位于包含它的影片剪辑的本地坐标系统中。因此,对于逆时针旋转90的影片剪辑,该影片剪辑的子级将继承逆时针旋转90的坐标系统。影片剪辑的坐标指的是注册点的位置。
      17.MovieClip._xmouse
      语法:MovieClip._xmouse
      描述:属性(只读);返回鼠标位置的坐标。
      18.MovieClip._xscale
      语法:MovieClip._xscale
      描述:属性;确定从影片剪辑的注册点开始应用的影片剪辑的水平缩放比例(percentage)。默认为(0,0)。
      19.MovieClip._y
      语法:MovieClip._y
      描述:属性;设置影片的坐标,该坐标相对于父级影片剪辑的本地坐标。同MovieClip._x。
      20.MovieClip._ymouse
      语法:MovieClip._ymouse
      描述:属性(只读);指示鼠标位置的坐标。
      21.MovieClip._yscale
      语法:MovieClip._yscale
      描述:设置从影片剪辑注册点开始应用的该影片剪辑的垂直缩放比例(percentage)。默认为 (0,0)。

TOP

flash专栏

五、对象
      由于Flash MX的脚本编程方式符合OO(面向对象)概念,所以,对象的脚本集合也是开发者经常使用的。
      (一)核心对象
      1.arguments
      arguments.callee
      语法:arguments.callee
      描述:属性;指当前被调用的函数。
      2.arguments.caller
      语法:arguments.caller
      描述:属性;指进行调用的函数的arguments对象。
      3.arguments.length
      语法:arguments.length
      描述:属性;实际传递给函数的参数数量。
      4.Array
      语法:new Array()
      new Array(length)
      new Array(element0, element1, element2,...elementN)
      参数:length一个指定数组中元素数量的整数。在元素不连续的情况下,length参数指定的是数组中最后一个元素的索引号加1。
      element0...elementN一个包含两个或多个任意值的列表。这些值可以是数字、字符串、对象或其他数组。数组中第一个元素的索引或位置始终为0。
      描述:Array对象的构造函数;你可使用构造函数来创建不同类型的数组:空数组、具有特定长度但其中元素没有值的数组或其中元素具有特定值的数组。
      5.Boolean
      语法:new Boolean([x])
      参数:x任何表达式。此参数是可选的。
      描述:Boolean对象的构造函数;创建Boolean对象的实例。如果省略x参数,则将Boolean
      对象初始化为具有值false。如果为x参数指定值,则该方法会计算它,并根据Boolean(函数)函数中的规则以布尔值返回结果。
      6.Date
      语法:new Date()
      new Date(year,month [,date [,hour[,minute [,second[,millisecond]]]]])
      参数:year一个0~99之间的值,表示1900年至1999年;如果年份不在上述范围内,则必须指定表示年份数的所有4位数字。
      返回:整数
      描述:Date对象的构造函数;构造一个新的Date对象,该对象保存当前日期和时间或指定的日期。
      7._global
      语法:_global.identifier
      返回值:对包含核心动作脚本类的全局对象(例如String、Object、Math和Array)的引用。
      描述:标识符;创建全局变量、对象或类。
      8.Math
      语法:Math.abs(x)
      参数:x一个数字。
      返回值:一个数字。
      描述:方法;计算并返回由参数x指定的数字的绝对值。
      9.Math.acos
      语法:Math.acos(x)
      参数:x一个介于-1.0~1.0之间的数字。
      描述:方法;以弧度为单位计算并返回参数x中指定的数字的反余弦值。
      10.Math.asin
      语法:Math.asin(x)
      参数:x一个介于-1.0~1.0之间的数字。
      描述:方法;以弧度为单位计算并返回参数x中指定的数字的反正弦值。
      11.Math.atan
      语法:Math.atan(x)
      参数:x一个数字。
      描述:方法;计算并返回参数x中指定的数字的反正切值。返回值介于-pi/2~+pi/2之间。
      12.Math.atan2
      语法:Math.atan2(y, x)
      参数:x一个数字,指定点的x坐标。y一个数字,指定点的y坐标。
      描述:方法;以弧度为单位计算并返回y/x的反正切值。返回值表示相对直角三角形对角的角,其中x是临边边长,而y是对边边长。
      13.Math.sqrt
      语法:Math.sqrt(x)
      参数:x一个大于等于0的数字或表达式。
      描述:方法;计算并返回指定数字的平方根。
      14.Number
      语法:myNumber = new Number(value)
      参数:value要创建的Number对象的数值,或者要转换为数字的值。
      描述:构造函数;新建一个Number对象。
      15.Object
      语法:new Object([value])
      参数:value要转换为对象的数字、布尔值或字符串。此参数是可选的。如果未指定value,则该构造函数创建一个未定义属性的新对象。
      描述:Object对象的构造函数;新建一个Object对象。
      16.String
      语法:new String(value)
      参数:value新String对象的初始值。
      描述:String对象的构造函数;创建一个新String对象。
      17.Super
      语法:super.method([arg1, ..., argN])
      super([arg1, ..., argN])
      参数:method要在超类中调用的方法。
      arg1可选参数,这些参数或者传递给方法的超类版本,或者传递给超类的构造函数。
      返回值:两种格式都调用一个函数。该函数可以返回任何值。
      描述:运算符:第一种语法格式可以用于对象方法体内,用以调用方法的超类版本,而且可以选择向超类方法传递参数(arg1...argN)。这对于创建某些子类方法很有用,这些子类方法在向超类方法添加附加行为的同时,又调用这些超类方法执行其原始行为。
      第二种语法格式可以用于构造函数体内,用以调用此构造函数的超类版本,而且可以选择向它传递参数。这对于创建子类很有用,该子类在执行附加的初始化的同时,又调用超类构造函数执行超类初始化。

TOP

flash专栏

(二)影片对象
      1.Accessibility.isActive
      语法:Accessibility.isActive()
      返回值:布尔值
      描述:方法;指示屏幕阅读器程序当前是否处于活动状态。当希望影片在有屏幕阅读器的情况下行为方式不同时,可使用此方法。
      2.Button.getDepth
      语法:myButton.getDepth()
      描述:方法;返回按钮实例的深度。
      3.Button.enabled
      语法:myButton.enabled
      描述:属性;指定按钮是否处于启用状态的布尔值。默认值为true。
      4.Button.tabEnabled
      语法:myButton.tabEnabled
      描述:属性;可以对MovieClip、Button或TextField对象的实例设置该属性。默认情况下它是未定义的。
      5.Button.tabIndex
      语法:myButton.tabIndex
      描述:属性;使你可以自定义影片中对象的Tab键排序。可以对按钮、影片剪辑或文本字段实例设置tabIndex属性,默认情况下为undefined。
      6.Button.trackAsMenu
      语法:myButton.trackAsMenu
      描述:属性;指示其他按钮或影片剪辑是否可接收鼠标按钮释放事件的布尔值属性。这将允许你创建菜单。你可以设置任何按钮或影片剪辑对象的trackAsMenu属性。如果
      trackAsMenu属性不存在,则默认行为为false。 可以在任何时间更改trackAsMenu属性;修改后的按钮会立即采用新的行为。
      7.myButton.useHandCursor
      语法:myButton.useHandCursor
      描述:属性;一个布尔值,当设置为true时,指示在用户用鼠标指针滑过按钮时是否显示手形光标。useHandCursor的默认值为true。如果useHandCursor属性设置为false,则将改用箭头光标。可以在任何时间更改useHandCursor属性;修改后的按钮会立即采用新的光标行为。可以从原型对象中读出useHandCursor属性。
      8.System.capabilities.hasAudio
      语法:System.capabilities.hasAudio
      描述:属性;指示播放器是否具有音频功能的布尔值。默认值为true。其服务器字符串为 A。
      9.System.capabilities.hasAudioEncoder
      语法:System.capabilities.hasAudioEncoder
      描述:属性;音频解码器的数组。其服务器字符串为AE。
      10.System.capabilities.screenColor
      语法:System.capabilities.screenColor
      描述:属性;指示屏幕的颜色是彩色(color)、灰度(gray)还是黑白(bw) 的。默认值为color。其服务器字符串为SC。
      11.Color
      语法:new Color(target)
      参数:target影片剪辑的实例名称。
      描述:构造函数;为由target参数指定的影片剪辑创建Color对象的实例。然后可使用该 Color对象的方法来更改整个目标影片剪辑的颜色。
      12._level
      语法:_levelN
      描述:属性;对_levelN的根影片时间轴的引用。你必须使用loadMovieNum动作将影片加载到Flash
      Player中以后,才可使用_level属性来定位这些影片。还可使用_levelN来定位由N所指定级别处的已加载影片。
      加载到Flash
      Player实例中的初始影片会自动加载到_level0。_level0中的影片为所有随后加载的影片设置帧频、背景色和帧大小。然后影片堆叠在处于_level0的影片之上的更高编号级别中。
      你必须为每个使用loadMovieNum动作加载到Flash
      Player中的影片分配一个级别。你可按任意顺序分配级别。如果你分配的级别(包括_level0)中已经包含SWF文件,则处于该级别的影片将被卸载并替换为新影片。
      13._parent
      语法:_parent.property
      _parent._parent.property
      描述:属性;指定或返回一个引用,该引用指向包含当前影片剪辑或对象的影片剪辑或对象。当前对象是包含引用_parent的动作脚本代码的对象。使用_parent来指定一个相对路径,该路径指向当前影片剪辑或对象上级的影片剪辑或对象。
      14._root
      语法:_root.movieClip
      _root.action
      _root.property
      描述:属性;指定或返回指向根影片时间轴的引用。如果影片有多个级别,则根影片时间轴位于包含当前正在执行脚本的级别上。指定_root与在当前级别内用斜杠记号(/)指定绝对路径的效果相同。

TOP

flash专栏

(三)客户端/服务器对象
      1.LoadVars
      语法:new LoadVars()
      描述:构造函数;创建LoadVars对象的实例。然后你可使用该LoadVars对象的方法来发送和加载数据。
      2.XML
      语法:new XML([source])
      参数:source为创建新的XML对象而进行分析的XML文本。
      描述:构造函数;创建一个新的XML对象。必须使用构造函数方法创建一个XML对象的实例之后,才能调用任何一个XML对象的方法。
      createElement与createTextNode方法是用于在XML文档树中创建元素和文本节点的“构造函数”方法。
      3.XMLSocket
      语法:new XMLSocket()
      描述:构造函数;创建一个新的XMLSocket对象。XMLSocket对象开始时未与任何服务器连接。必须调用XMLSocket.connect方法将该对象连接到服务器。

TOP

flash专栏

Flash MX中音乐的导入及词曲同步
      将音乐导入到Flash中并实现词曲同步是制作Flash
      MTV的基本功之一,但许多初学者由于不得要领,往往实现不了词曲同步,或者在操作过程中经常出现一些不该有的失误。其实只要你有足够的耐心,明白其中的奥秘,很快就可以上手,下面让我们来看一个简单的实例。
      音乐的导入
      Flash
      MX支持的音乐格式有WAV、MP3等,但由于音乐格式的文件一般比较大,所以大家在使用过程中一定要注意压缩。一般都选择MP3音乐,就是因为MP3是压缩效率很高的声音文件,它的导入过程如下:
      1.首先开启Flash,新建一个Flash文件,影片属性选默认设置即可,然后导入一幅图形文件作为背景图1。
      2.在层1上双击鼠标左键,将层1改名为“音乐”,然后单击“插入→新建组件”,将创建新符号的名称改为“music”,类别选中“电影片断”,按“确定”进入符号编辑窗口,单击“文件”菜单,选择“导入”命令,将选定的一首“情人.mp3”导入到“music”这个组件中。
      3.回到场景1中,按下“Ctrl+L”,打开库窗口,将“情人.mp3”拖入到场景1中,你将看到“音乐”层的第一帧,会出现一条线(一小段声波),此时还需注意将属性面板中的“同步”设置为“数据流”。
      4.将时间线下面的滚动条尽量向后拖动,在可以显示的最后一帧处按F5插入帧,这时时间线上出现了一条波浪线,采取同样的方法,测试该音乐文件共有多少帧图2。
      5.至此,我们就完成了音乐文件的导入工作。如果有的朋友只想要一半的音乐文件,可在声音的属性面板中单击“编辑”按钮,将右边的控制条拖动到适当位置即可。控制条后面的声音将不会被播放图3。
      歌词的输入
      导入音乐完成之后,剩下的就是输入歌词了,这是Flash中比较关键和繁琐的一步。下面我们做详细介绍。
      1.单击“插入层”按钮,增加层2,双击鼠标左键将它改名为“歌词”,然后选择该层的第一帧,按回车键测试每一句歌词的位置。当听到第一句歌词出现时,按下回车键,使其停止,按右键在此插入一个空白关键帧,同时在属性面板中,给“帧”处加一个标签,防止遗忘。此时,点击插入空白帧处会有一个小红旗的标志图4。
      2.用同样的方法给每句歌词所在的位置插入空白关键帧,同时在属性面板中加入帧标签。
      3.找到每句歌词所在的位置后,下面开始创建新符号,把歌词制作出来。单击“插入→新建组件”,取名“歌词一”,按“确定”进入符号编辑窗口,用文字工具输入“Girl
      每当我开始沉默的时候”,回到场景1,选中歌词层中的第一个标签处,按“Ctrl+L”,将歌词1拖至场景中的适当位置即可(如图5)。
      4.接着新建一个组件,取名歌词二,输入“你比我更难过”,在歌词层的第二个标签处将库中的第二句歌词拖入到场景中的适当位置。看明白了吗?其他的相信你一定会触类旁通,顺利地制作出来的。好了,按“Ctrl+回车”测试一下效果吧。
      以上介绍的都是Flash中最基本的操作步骤。如果你在熟悉它们的使用方法后,还可以试着在组件中做出诸如旋转文字、变形文字等特效,它会使你制作的Flash
      MTV字幕产生生动而有趣的效果,而不仅仅是欣赏一些呆板的文字。这就靠你自己的努力了。

TOP

flash专栏

Flash5 Action初体验──悠游水泡 Flash5正式版已发布,想必不少人已接触过它。关于它的好处这里就不多说了。下面就随我来用Flash5编写一个水泡的Action程序吧。 成品效果为在白底的320×240的区域内,只要鼠标一拖动就会拉出一串大小不一的水泡。水泡越浮越大,有些爆开了,有些就消失了。在下面的输入栏中可以调节水泡的数量和上浮速度。 1.新建一个场景,底色为白色,宽和高分别为320和240,帧数就为默认的12帧。 2.在工作区中画一个圆(大小不必在意,在Action中可以控制),打开Window/panels/Fill面版,填充刚才画好的圆,色彩只要看上去舒服,过渡自然就可以了。 3.把圆的边框删除,选取菜单Insert/convert to symbol,在弹出的面板中,将Name设为Gnist1_graph,Behavior设为Movie Clip。完成后将这个组件从场景中删除,以后就能方便地从Liarbry中调用它了。 4.在场景的左下角用字符工具(Character)在工作区中打上“Number”,换一行再打上“Speed”。 5.然后在“Number”后面再次用字符工具打上“1”,换回箭头工具,选中字符框“1”,点击鼠标右键,并选择Panels下的Text Options,这时会弹出TextOptions的控制面版。在面板的最上方是一个面板tab,下面一行有个下拉箭头,我们点一下这个箭头并选择Input Text,然后我们在Variable的输入框中输入“m”来把变量名设为m。最后在Max Chars输入框中输入“2”把可输入的字符数限定在两个。接着就用同样的方法在“speed”后建立一个字符框,打上15,变量名为g,如图1(图)。 6.新建一个Movie Clip组件,取名为crack。把先前做好的叫Gnist1_graph的组件从Liarbry中拖入这个新建的组件中,并用Modify/Break Apart命令把它打散。 7.插入几个关键帧做出一个水泡爆裂的效果,只要像就可以了。别忘了在最后插入一空白关键帧,对它双击调出Action面板,在右边的输入框中写入removeMovieClip(“”),这句话的意思就是让组件把自己删除,也就是水泡爆裂后就自我删除(Flash5的Action面板需要拉宽,否则你是看不见右边的输入框的,点击右上角的箭头可以选择Nomal Mode或Expert Mode,一个是用mouse选择输入action,一个直接输入),如图2(图)。 8.再新建一个Movie Clip组件,取名为Gnist1,把Gnist1_graph的组件拖入这个新建的组件中,鼠标右键单击Gnist1_graph,选择Panels下的Instance。在新弹出的面板中的Name一栏中输入“g”,这样就为组件 Gnist1_graph取了个instance name 叫g。接着双击第一关键帧,写入Action如下: gg = /:g; 设变量gg为主场景下的变量g的值(就是那个deep的字符框) setProperty (“g”, _y,getproperty(“g”,_y)-gg);  给MC g的Y坐标赋值为当前的Y坐标减去变量gg的值(现在就是减半15) setProperty (“g”, _alpha,getproperty(“g”, _alpha)-3);  设置MC g的透明度为当前的透明度减3 setProperty (“”, _xscale,(_xscale)+(random(3)));  设置当前MC(即Gnist1)的x缩放为当前的x缩放随机加上0到3中的一个数 setProperty (“”, _yscale,(_yscale)+(random(3)));  照上句 opx = getproperty(“g”,_x);  设变量opx为MC g当前的X坐标 opy = getproperty(“g”,_y);  照上句 a = getproperty(“g”,_alpha);  照上句 if (bo == random(8) and a<50 and (opxs+opys)>80) {如果变量bo等于0到8的九个数中随机产生的一个(如果bo为1的话就有1/9的机会条件成立),而且透明度小于50,x和y的缩放大于80就执行 gotoAndPlay (4) 跳至并播放第4帧 } 写完后在第二帧处插入关键帧,双击写入action如下: bo =“1”; 设变量bo为1 opxs = _xscale; 设变量opx为当前MC的x的缩放大小 opys = _yscale; 照上句 if (a<=0) {  如果透明度小于0的条件成立,那么执行 gotoAndStop (3);  跳至并停于第3帧 } else { 如条件不成立 gotoAndPlay (1);  跳至并播放第1帧 } 9.写完后在第三帧处插入空白关键帧并写入:removeMovieClip(“”);。之后我们就要把水泡爆裂的动画加入。在第四帧处插入关键帧,把叫crack的MC在此关键帧中拖入当前MC中,取instance name为w,双击关键帧写入Action如下: setProperty (“w”, _x, opx);  setProperty (“w”, _y, opy);  setProperty (“w”, _xscale, opxs);  setProperty (“w”, _yscale, opys);  setProperty (“w”, _alpha, a);  (大家可以参照前面的解释理解) 10.完成后在第四关键帧后第n-1个帧处插入一空白关键帧(n是叫crack的组件帧数,如果组件 crack有5帧,那就该在第8帧处插入空白关键帧,如图3)。双击写入: removeMovieClip (“”); 11.至此叫Gnist1的组件中的内容全部完成了,我们已有了个会越向上浮就越大,越透明,偶尔会爆裂的水泡。下面要做的就是让mouse能拖出一串水泡。 12.新建一个组件,取名dg。在其中用字符工具输入bubble,颜色大小可根据自己的喜好而定,后面我们将用它来替换鼠标的样子。回到主场景中,新建一层,把叫dg的MC和名为Gnist1的MC都在新建层上拖入场景,分别取instance name为dg和gnist1。双击新建层的第一关键帧,写入action如下: startDrag (“dg”,true,0,240,320,0);  开始拖动MC dg,锁在mouse中央,只能在x:0到320,y:0到240里拖动 setProperty(“gnist1”,_visible,False);  设置MC gnist1的可见性为不可见 gx = getproperty(“dg”,_x);  gy = getproperty(“dg”,_y);  以上两句参照前面的解释 if (gx<>gx1 or gy<>gy1){  判断mouse是否有移动,有就执行 l = m; 设变量l为m(就是number的字符框,现在是1) while (l>=0){  当l>=0成立时循环执行 l = l-1; Scale = random(25)+5; setProperty (“/gnist1”, _x, getproperty(“dg”, _x)+random(3) -random(3);  setProperty (“/gnist1”, _y, getproperty(“dg”, _y)+random(3) -random(3); setProperty (“gnist1”, _visible, True);  setProperty (“/gnist1”, _rotation, random(20)+1);  setProperty (“/gnist1”, _xscale, Scale);  setProperty (“/gnist1”, _yscale, Scale);  n = n+1; 以上参照先前的解释 bn = “gnist1”&n;(或写为“gnist1”addn或“gnist1”+n) 变量bn为gnist11,gnist12……gnist1n duplicateMovieClip (“gnist1”, bn, n);  复制MC gnist1直到第n个 } 结束循环 } 13.写完后在新建层的第二帧处插入关键帧,双击写入action如下: gx1 = getproperty(“dg”,_x);  gy1 = getproperty(“dg”,_y);  这是为了判断mouse而设的变量 14.写完后回到旧的那层,双击那层的第一关键帧,写入:Mouse.hide();。这句话的作用就是隐藏鼠标。完成后按F5键增加一帧新帧,以求两层帧数相同。 好了,大功告成。测试一下影片吧, 是不是很有意境啊!

TOP