Flash拾零


AS代码

    工具命令
发布时间:2023-10-26 访问次数:131
零碎    



  Flash里主要的代码都集中在全局函数里。

  函数:可以理解为“功能模块”或“命令”,它是一些可以重复使用的代码块。

  大括号内是所要执行的动作内容。

  代码的标注前应加上“//”。

  代码只能应用于影片剪辑 按钮和关键帧,而不能应用于图形或图形类元件。

  代码是从上往下,从左往右逐行执行的,如果两个命令相互冲突了,那么先添加的命令总是服从后添加的命令。

  给补间里的一个帧添加了代码以后,整个补间里的帧就都带有相同的代码了。

  对象的动作可以用代码控制发生,下面是一组控制影片剪辑类元件运动的代码:

 onClipEvent (load)
 {
 var speed = 1;
 }
 onClipEvent (enterFrame)
 {
 if (this._x > 400)
 {
 var speed = -Number(random(2) + 1);
 } // end if
 if (this._x < 66)
 {
 var speed = Number(random(2) + 1);
 } // end if
 this._x = this._x + speed;
 }

其中this._x指的是x轴向上的坐标,var speed指的是运动的速度。

  AS代码区分大小写,空格可以除去。

  label:标签。

  frame:帧。

  var:变量(在文本工具的动态文本和输入文本属性面板里)。

  &&:与操作。

  level:图层。

  _root表示路径,路径里的各个级别间是用“.”号隔开的 。

  结束一个语句是用“;”(即回车键),而跟在大小括号后的“;”都可以省略。

  x++里的++表示递加,即每执行一次,变量x的值就增加1,同样的 x--表示递减,而x+=2则表示每执行一次就递加2。

例:a=0;a<8; 则a++(也可以记做a+=1)代表0,1,2,3,4,5,6,7,而a+=2代表0,2,4,6(递加2)。

  代码添加原则:一般的,由哪个对象发出的命令,就应把代码添加在哪个对象上,而不需要对象来发出的命令都可以把代码添加在帧上。

例:

在帧上给文本框一个初始值:

 var b=0;

在按钮上添加代码:

 on(release)
 {
 if(b<4){b++}
 else{b=4}
 }

它执行的命令是:当点击对象时,如果变量b<4(在这里,变量b指的是场景的动态文本里所显示的数字)将执行每点击对象一次,b的值就增加1的命令 否则(else),当b>4时将始终执行b=4的命令。

  系统默认的命名,不能随意更改,如主场景的命名只能用“_root”,子场景与父场景之间对应的参数的命名只能用“link”。

  动作面板里显蓝色的代码指的是从面板上添加的代码,亦即系统默认的代码。

  如果一个动作找不到执行者,那么它应该是帧动作。

  在帧的动作面板里给场景中的文本框设置了变量后(格式为:变量名=“文段的html代码”)文本框里将显示出所设置的文段内容(文字的颜色和字号可以在文本框的属性面板里设置,也可以用html代码color=\"#000100\">…来定义,这里\"为双引号字符,\''为单引号字符,\\为反斜杠字符 \000 - \377为八进制表示的字符,\x00 - \xFF为十六进制表示的字符)。

  Flash里,键盘的所有按键都有其各自的代码。

例:

 onKeyDown = function()
 {
 if (Key.isDown(65)){}
 }

表示当按下键盘的“a”键时将执行function ()这个自定义函数里面的动作。

  语句/用户自定义函数里/function ():译“功能/函数”,用来自定义函数,通常给它一个命名以便以后调用它,命名的方法为“a=function (){…}”或“function a (){…}”,小括号中是大括号里函数的所有参数。

  语句/用户自定义函数里/return:从函数里获得结果(Flash里的“返回”可以理解为“获得”)。

  让一个对象发生一个动作,记做“对象路径.动作”(“.”表示附属关系)。

  对一个对象执行一个动作后产生一个结果,记做“对象路径.动作=结果”。

  给帧添加的代码只会是纯粹的一个动作,而给对象添加代码则会(也必须)同时添加一个触发事件(即on/onClipEvent处理函数,否则预览时将会报错)而给影片剪辑或按钮所添加的触发事件又各不相同。

  给影片剪辑添加play stop或goto只能控制影片剪辑自身内部的播放、停止或跳转。

  给按钮或帧添加play stop或goto控制的是当前整个场景(即主场景)的播放、停止或跳转,而如果要控制指定的影片剪辑内的播放、停止或跳转则要在前面加上该影片剪辑的路径。

  动作面板里先添加的代码总是服从后添加的代码,如:stop(); play();所执行的动作是播放。

  浏览器/网络 > fscommand是设置全屏,返回标准模式,退出播放器和关闭右键菜单的命令,需要将文件导出后才可看到效果。

  浏览器/网络 > loadMovie:加载影片或图片到场景中指定的位置,但要先新建一个空的影片剪辑做容器以指定欲加载的位置(代码应添加在帧上)代码写为:loadMovie("http://...jpg",mc)。

  浏览器/网络 > loadMovieNum:加载影片或图片到场景中指定的层,代码写为:loadMovieNum("http://...jpg",图层名称)加载的位置默认在场景的原点处,若要设置到别处,可以运用代码:

 onEnterFrame=function()
 {
 if(要移动的图层名称)
 {
 with(要移动的图层名称)
 {
 _x=值
 _y=值
 }
 Delete onEnterFrame;
 }
 };

  影片剪辑控制/duplicateMovieClip:只能添加在帧或按钮上(如果是影片剪辑,可以在属性面板上设置成按钮类型后再添加),它可以复制对象,复制出来的对象将与原物体重合,那么可以利用影片剪辑控制/setProperty(设置影片剪辑的属性 用法同duplicateMovieClip)设置它的的位移属性 使之移动至别处。

  影片剪辑控制/removeMovieClip:删除指定的由duplicateMovieClip代码复制出来的影片剪辑。

例(下雨代码):

 function ee()
 {
 duplicateMovieClip("mc",c,c);
 setProperty(c,_x,random(500));
 setProperty(c,_y,random(-100));
 c++;
 if(c>300)
 {
 clearInterval(kk)
 }
 }
 kk=setInterval(ee,20);
 c=1;

分析:在帧里每隔20毫秒执行一次自定义函数ee(setInterval(ee,20)为周期调用),ee的内容为:复制对象mc生成对象c,c的初始值为1(可随意设置)且它的x和y轴坐标分别为0至500和0至-100的随机值(否 决的/函数/random),而c++表示每执行一次自定义函数,c的值就增加1,直至c>300时才停止周期调用(即kk)。

  运用影片剪辑控制/startDrag(或stopDrag)拖动影片剪辑(或停止拖动影片剪辑)时必须指定影片剪辑的路径(包括“_root”),“锁定鼠标到中央”是将影片剪辑吸附在鼠标上进行拖动(但要去选“限制为矩形”)。

  隐藏鼠标的代码是Mouse.hide ()(在ActionScript2.0类/影片/Mouse/方法里),可以直接添加在帧里,如果是添加在对象上则必须出现在on或onClipEvent处理函数中。

例:

 Mouse.hide();
 mc.onMouseMove=function()
 {
 this._x=this._parent._xmouse;
 this._y=this._parent._ymouse;
 updateAfterEvent();
 };

分析:应添加在帧里(因为没有触发事件),this代表mc mc.onMouseMove=function() {}(在ActionScript2.0类/影片/Mouse/侦听器里)是实现对象,mc跟随鼠标移动的一个函数,函数的内容为:对象的x、y轴坐标分别等于鼠标的x、y轴坐标 而updateAfterEvent()则表示该函数随着鼠标的移动进行时时的更新(即强制Flash player重绘显示效果)从而提高了计算的速度,使得mc随鼠标的移动更加流畅。

  需要时时更新的地方都需要这两个命令:(1)updateAfterEvent()是更新舞台。(2)全局函数/其他函数/setInterval是更新函数,即周期性地调用函数。

例:

 m=function()
 {
 a=_root._xmouse;
 b=_root._ymouse;
 }
 setInterval(m,10)
 updateAfterEvent();

分析:这是一段时时显示鼠标坐标的代码,a、b为动态文本变量,10为10毫秒。

  语句/变量:它是一个可以承载信息的容器(相当于一个对象,也可以是一个假设存在的对象,常用于if语句)而这个信息是随着相关的设置在不断地发生着相应的变化的。

  假设存在一个变量a,当对元件m按下鼠标时执行代码on(release){a=1;}(亦即用a=1标记了元件m上的鼠标事件),那么由代码if(a=1){mc.gotoAndStop(2);}else{mc.gotoandStop(3);}便可以判断影片剪辑mc应跳转到第2帧还是第3帧了。

结论:除了变量代码以外,所有代码都只能控制同一帧以及紧跟在该帧后面而无任何空白帧间隔开的所有帧里的元件,而变量代码(即对象为变量的代码)则是控制同一帧以及该帧后面所有帧(尽管被空白帧间隔开了)里的变量。

  var:声明(即“创建”)变量的代码 如:var a表示指定a为变量(v必须小写)。

  var a;a=0;也可以写成var a=0;(“var”可以省略)。

  gotoAndStop(x)里的x指的是变量x的内容(亦即一个内容),而gotoAndStop("x")里的“x”指的是命名为x的帧(亦即一个名称)。

  a=b表示对象b替代了对象a,是一种关系表达式,而a="b"则表示对象a的取值或内容为b,是一种取值关系,当b为一个数字时引号可以省略。

  a=" "表示a的值为空。

  在条件语句里,一般用全等号“==”表示等号(也可以用“=”)。

  如果在某一帧处Flash记住了某一信息或指令,那么在该帧后的所有帧里它都将记录着该信息或指令。

  条件语句也可以出现在on处理函数的大括号里。

  条件语句只会执行一次(从初始值开始),而循环语句可以重复执行(从初始值开始,只要满足条件就可以重复执行一直到不能满足条件而跳出循环为止),所以a=0;do {a++;trace(a);} while (a<2)(全局函数/其他函数/trace:将内容发送到输出窗口)相当于a=0;if (a<2) {a++;trace(a);} if (a<2) {a++;trace(a);}。

  do {…} while (…)也可以写成while (…) {…}。

  假设a为一个动态文本变量,那么a=0;if (a<10) {a++;}的结果是文本显示为1,而a=0;while (a<10){a++;}的结果是文本显示为10。

  for (初始值;条件;下一个) {…}(“下一个”是一个表达式,表示下一个数值的计算方法)。

  var a:Array=new Array("1","2","a");表示创建一个新的变量a,a的类型为Array(数组,也可以更换为其他的类型,如声音类型Sound)内容为“1”,“2”,“a”。

例:
 var sy:Sound=new Sound;
 sy.loadSound("http://...mp3",true)

分析:它创建了一个声音对象sy,并给sy设置了下载属性“loadSound”,从而可以使动画播放出背景音乐。

  条件语句里的else if可以根据需要添加多个。

  getProperty为获得对象属性的命令。

  a=getProperty(对象,属性)也可以写为a=对象.属性。

  setProperty(目标,属性,值)可以修改对象的属性,也可以写成目标.属性="值"。

  在动作面板上的“插入目标路径”里可以添加场景里所有对象的路径,一般采用绝对路径。

  on(release){gotoAndPlay(场景路径._currentframe+100)}表示当释放鼠标时指定场景在所播放到的帧号上快进100帧。

  “对象.属性=对象.属性+数值”表示对象的属性值在原有的数值上提高了一个数值。

·发表评论