FLASH动作脚本代码集锦(8页).doc
-FLASH动作脚本代码集锦-第 8 页1 、简单 loading 代码: 方法 1 、使用载入字节数判断 b=getBytesTotal(); 获取总的字节数 a=getBytesLoaded(); 已经下载的字节数 onEnterFrame=function() 进入帧时 , 进行判断 if (a = b) 如果载入的字节数等于总的字节数 delete this.onEnterFrame 删除进入帧 gotoAndPlay(frame); 转入到你要播放的帧 else 否则 a=getBytesLoaded(); 已经下载的字节数 percent=int(ab100)+%; 计算已经下载的百分比 把上面方法放入第一帧就可以了 方法 2 、使用载入的帧数判断_ 用 Action 语法地 if frame is loaded 来实现 , 新建一层,这层专门放 Action, 第一帧, ifFrameLoaded ( 场景 , frame) 假如场景中地祯数已经载入 goto and play() 跳至并播放某某祯 ( 自己设定 ) 第二帧, ONpQ goto and play( 场景 1, 1) 跳至并播放第一祯循环 再加上一个 load 地 MC 循环播放在这两帧的中间,就 OK 了。 2 、用 flash 做那种弹出的小窗口 分两步: 给 flash 中的按钮加入如下 action on (release) idd getURL (MM_openBrWindow('newweb.htm','','width=600,height=100'); 在 HTML 页面的 head.head 之间加入下面的 javascrpt 代码 . scrpt language=javascrpt !- Y function MM_openBrWindow(theURL,winName,features) v2.0 window.open(theURL,winName,features); ; - scrpt 3 、载入 swf 文件的控制 在 flash 中可以使用 loadmovie ()和 loadmovienum ()两个函数控制,具体代码如下: loadmovie 载入的控制 _root.createEmptyMovieClip ( aa , 1 ); with ( aa ) _x = 50 ; _y = 100 ; _width=200 _height=300 _alpha=50 loadMovie ( 02.swf ); loadMovieNum 的载入控制: loadMovieNum ( 02.swf , 1 ); onEnterFrame = function () if ( _level1 ) with ( _level1 ) _x = 50 ; _y = 100 ; delete onEnterFrame ; ; 在 flash 2004 中,增加了 MovieClipLoader 类,使用它可以控制播放,下面是一个测试代码: var mcl= new MovieClipLoader(); 定义新的 MovieClipLoader 对象 var listener = new Object(); 定义一个新的对象,用来监听 load 进程 listener.onLoadProgress=function(target,loadedBytes,totalBytes ) onloadprogress 加载 过程中每当将加载的内容写入磁盘时调用 其中 loadedBytes 是已经下载的字节, totalBytes 是正在加在的文件的总字节数 x=loadedBytes y=totalBytes trace(x+ bytes 已经 load 了 ); trace(totalBytes + bytes 需要 load); d=x100y 计算已经载入的百分比 ) listener.onLoadInit = function(target) 当执行加载的剪辑的第一帧上的动作时调用 if(d100) 如果没有加载完成,不要播放 target.stop(); else 加载完成,可以设置加载的 swf 文件开始播放的帧数 target.gotoAndPlay(2); target._width=400 设置加载的影片的大小及其位置等相关属性 target._height=350 target._x=25 target._y=50 mcl.addListener(listener); 注册一个新的监听对象 mcl.loadClip(.swf,1) 使用自定义的对象,加载 swf 文件 4 、设为首页 on (release) getURL(void(document.links.style.behavior='url (#default#homepage)');voiddocument.links.setHomePage(' htt'),_self, POST); 注意要将网页中的 flash 的 ID 号命名为 links 加入收藏夹 on (release) getURL(void window.external.AddFavorite(' httw',' 网页 ');,_self, POST); 5 、如何随机设置 MC 颜色? 方法 1 、 MC 实例名为 mc mycolor=new Color(mc) mycolor.setRGB(random(0xffffff) 方法 2 、 MC 实例名为 mc mycolor=new Color(mc) mycolor.setRGB(random(16777215) 方法 3 、 myColor = new Color(mc); myColorTransform = new Object(); 用 new Object() 为 setTrandform() 创建参数并随机取值 myra = random(100); myrb = random(255); myga = random(100); mygb = random(255); myba = random(100); mybb = random(255); myaa = random(100); myab = random(255); myColorTransform = ramyra, rbmyrb, gamyga, gbmygb, bamyba, bbmybb, aamyaa, abmyab; myColor.setTransform(myColorTransform); 方法 4 、 mycolor = new Color(mc); mycolor.setRGB(random(255)16random(255)8random(255); 6 、关于随机数的技巧 用来产生 6-20 之间的 5 个不重复的随机数 1) 首先产生一个随机数 , 放在数组对象中的第一个位置 2) 产生一个新的随机数 3) 检查新产生的随机数和所有目前已产生的随机数是否相同 , 若是相同则返回 (2), 否则返回 (4) 4) 将新的随机数加入数组对象中下一个数组元素内 5) 检查数组对象个数是否已达到 5 个 , 若是跳到 (6), 否则返回 (2) 6) 结束 AS 如下 data1=newArray(5); tot=1; data1=tot-1=random(20-6+1)+6; do gen_data=random(20-6+1)+6; reapeat_data=0; for(i=0,i=tot-1;i+) if(gen_data=data reapeat_data=1; break; if(reapeat_data=0) tot+ datatot-1=reapeat_data; while(tot5); trace(data1); 7 、如何禁止右键菜单、缩放、全屏 在第一桢中输入下面命令: 全屏 FS Command (fullscreen, true) 禁止缩放 FS Command (allowscale, False) 禁止菜单 FS Command (showmenu, False) fscommand 的方法还是只能适用于 fp ,在网页中使用还是必须添加额外的参数 PARAM Name=menu value=false 或者用最简单的一句 as ,在 fp 和网页中均适用: Stage.showMenu=false; 8 、如何实现双击效果? 把下面的代码放到按钮上: on (press) time = getTimer()-down_time; if (time300) trace(ok); down_time = getTimer(); 这样的话,如果都用比较麻烦,写了一个类来判断 MovieClip.prototype.doubleClick = function() this.timer2 = getTimer()1000; if (this.timer2-this.timer)0.25) return true; else this.timer = getTimer()1000; return false; ; 继承了 mc 的类,可以重复使用,当然也可以封装为 2 。 0 的类 9 、如果要在浏览器中实现全屏效果,只需在 html 文件中加入以下代码即可: scrpt window.open(.swf,fullscreen=1,menubar=no,width=800,height=600) scrpt 其中 .swf 为要调用的 FLASH 文件,记住要将该文件放在 html 文件的同一路径下面。要退出全屏状 态需按 ALT F4 或退出。 如果在 swf 文件中,添加关闭按钮,使用下面的代码: on(release) getURL(opener=null;window.close();); 10 、用 AS 怎么把影片倒放 function prev(target) target.gotoAndStop(target._totalframes); target.onEnterFrame = function() if (this._currentframe1) this.gotoAndStop(this._currentframe-1); else delete this.onEnterFrame; ; prev(_root.mc); 指定要倒退播放的 MC instance name 就可以了 11 、声音相关 之前为 MYSOUND 链接一个属性 1 : mysound=new Sound(); (注释) mysound 是一个变量名, new Sound 是一个构造函数,表 示 mysound 是一个 Sound 对象。 以后可以通过 mysound 来调用 Sound 方法 HK 2: mysound.attachSound(name); 这里的 NAME 就是你之前在标识符里写的东西了,对应好了就 OK ! 3: mysound.setVolume(50); 这个是控制声音播放时的声音大小,取值在 0 到 100 ,意义大家都 知道吧,不会有人认为 0 是最大声吧 4:mysound.start(0.01); 这个语句是表示开始播放声音,()里的参数表示声音开始的位置,单位 为秒,再来就是循环几次 比如 mysound.start(30 , 2); 声音从 30 秒处开始循环 2 次。 12 、倒计时 首先新建文件以后,在主场景中分别用文字工具建立三个动态文本框,变量名字分别是: leftmin,leftsec,leftmilli, 也就是分别来显示计时的分钟、秒数和毫秒数。 然后新建一层,在第一桢写上如下代码即可:(已经做了详细解释,相信大部分朋友能够理解这些代码 的意思) onLoad = function() 当场景加载以后执行 totalmin = 40; totalsec = 60; totalmilli = 100; 初始化一些变量,在后面的计算中要用到这些变量 nEnterFrame = function() 逐桢执行动作 currentsec = Math.round(getTimer()1000); 求出当前影片已经播放的秒数(取整) currentmilli = Math.round(getTimer()10); 求出当前影片已经播放的毫秒数(取整) leftsec = totalsec- currentsec; 剩余的秒数等于总的秒数减去已经播放的秒数 leftmin = totalmin; 开始分钟数等于总的分钟数,开始是不变的 leftmilli = totalmilli - currentmilli; 剩余的毫秒数等于总的毫秒数减去已经播放的毫秒数 if(leftsec10)leftsec = 0+leftsec if(leftmin10)leftmin = 0+leftmin if(leftmilli10)leftmilli = 0+leftmilli 以上三句是当分钟数、秒数、毫秒数小于 10 的时候,前面加上一个 “0” 。 if(leftmilli=1)totalmilli+=100; ); 当计时剩下的毫秒小于 1 的时候,总秒数再加 100 ,以便下一次重新计时