




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Flash 特效制作常用的源代码放送http:/flash.QQ.com2007年04月12日14:18 网页教学网 评论3条 第 1 2 3 4 5 页 *对象数组 比如要构建一个有很多属性的数组,简单的可以这样做: 比如要构建一个有很多属性的数组,简单的可以这样做: var a:Array = new Array(); for (var i = 0; i10; i+) ai = new Object(); ai.x = 10; ai.y = 10*i; = -; ai.id = i; / 随便你给什么属性啊。 /先用局部变量存储对象会更好一点。 var a=new Array() for(var i=0;i10;i+) var ta=new Object(); ta.x=10; ta.y=10; =n+i; a.push(ta); /或者更简便一点的方法: var a=new Array() for(var i=0;i10;i+) ai=x:10,y:10,name:n+i *程序控制角色运动 下面这段代码控制 MovieClip mc 从 (50,50) 横向运动到(100,50) 停止,速度为 5 pixel: mc._x = mc._y=50; mc.onEnterFrame = function() _x += 5; trace(_x); if (_x = 100) delete (mc.onEnterFrame); ; *精确计时 我们设定了时间为60 秒,然后通过setInterval 来定期(每1000milliseconds)触发一个函数 runTimer。function runTimer 用来计时,当时间到了以后,转去执行 outThere。function outThere 用来处理时间到了以后的动作,不要忘记 clearInterval(intervalID),停止计时。 var time:Number = 60; var intervalID:Number; intervalID = setInterval(runTimer, 1000); function runTimer() time-; trace(time); if (time = 0) outThere(); function outThere() / blah blah blah clearInterval(intervalID); *找到目前最小的一个可用的深度 Depth(来自国外) 针对 Flash Player 6 的: availTopDepth = function () var allDepths = ; for (var z in _root) if (_rootz instanceof Button | _rootz instanceof MovieClip | _rootz instanceof TextField) allDepths.push(_rootz.getDepth(); if (allDepths.length != 0) sortAll = function (a, b) if (ab) return 1; else return 0; allDepths.sort(sortAll); return (parseInt(allDepthsallDepths.length-1)+1); ; trace(_root.availTopDepth(); 放置一个 MovieClip 在 Stage,再执行这段 Action 就会得到最近的一个可用深度。我们也可以用这个来创建绝对不会出问题的 MovieClip,比如:_root.createEmptyMovieClip(mc_name, availTopDepth();getNextHighestDepth() 以及 getInstanceAtDepth(depth)是 for player 7 的。鼠标消隐之后,右健弹出菜单,鼠标就又出现了,并且一直保留着完整的解决方法是:在 左健抬起,右健第二次抬起,回车键抬起的时候再次消隐鼠标。完整的方法比较复杂,下面是一个简单的解决方法,可以解决绝大多数的问题: onEnterFrame=function() if(Key.isDown(1)| Key.isDown(Key.ENTER) Mouse.hide(); *我常用的一个加速度移动的代码 以下是引用片段: /以下代码放到主场景第一帧 stop(); _global.a = 5; /移动加速度,越大越慢 _global.click_x = 0; /用来记录点击鼠标的位置 _global.click_y = 0; _root.onMouseDown = function() _global.click_x = _root._xmouse; _global.click_y = _root._ymouse; /me是受控mc的instance name me.onEnterFrame = function() if (Math.abs(_global.click_x-me._x)2 & Math.abs(_global.click_y-me._y)1000 | Number(a_v.text)0) /default value a_v.text = 5; else _global.a = Number(a_v.text) ? Number(a_v.text) : 5; /trace(_global.a); ; *随机输出1到100而不重复的语句: seq = new Array(100); pArray = new Array(100); function makeRandom() for (i=1; i=100; i+) seqi = A; function mRandom() while (true) n = int(random(100)+1; if (seqn = A) seqn = 0; break; return (n); function rArray() for (i=1; idis) delete onEnterFrame; ; *计算两个对象之间/两点之间的距离(注册点) function getDistanceOf(target1, target2, x2, y2) if (arguments.length = 4) dx = x2-target1; dy = y2-target2; else if (arguments.length = 2) dx = target2._x-target1._x; dy = target2._y-target1._y; return Math.sqrt(dx*dx+dy*dy); /Arguments 对象是一个数组,其中包含作为参数传递给任何函数的值。每次在动作脚本中调用函数时,都会为该函数自动创建 Arguments 对象。同时还会创建一个局部变量 arguments,使您可引用 arguments 对象。 *让播放的MC暂停一段时间 function pausePlay(sec) pfunc = function () this.play(); clearInterval(this.pint); stop(); this.pint = setInterval(this, pfunc, sec*1000); /这样调用.sec是暂停的时间,单位是秒. pausePlay(2); onHitTest(target),自己写的一个MC事件,当该MC与指定的MC hitTest的时候触发事件.其实也没什么特别的地方,一样也是用setInterval来实现. stop(); MovieCtotype.listen = function(target) if (this.isHiting = undefined) this.isHiting = this.hitTest(target); if (this.hitTest(target) if (this.isHiting = false) this.broadcastMessage(onHitTest, this, target);/广播事件,给事件传递this和target两个参数 this.isHiting = true; else this.isHiting = false; ;/为MovieClip添加域成员listen成员,用于监视当前对象与目标是否碰撞 MovieCtotype.watch = function(target) this.timer = setInterval(this, listen, 50, target); ;/以每50毫秒检测一次的速度来检测是否碰撞 MovieCtotype.unWatch = function() clearInterval(this.timer); ;/停止对对象的监视 ASBroadcaster.initialize(MovieCtotype);/初始化MovieClip原型为事件源 /下面是调用的示例 /假设有两个MovieClip,左边ball,右边wall,让ball不断往wall移动,同时监视wall,一旦击中触发事件onHitTest ball.onEnterFrame = function() this._x += 5; ;/让ball不断往右方移动工 myListener = new Object(); myListener.onHitTest = function(source,target) trace(The + source._name + hit + target._name + .); ; ball.addListener(myListener);/创建监听员并注册给ball ball.watch(wall);/让ball监视wall *MD5 32位码的Flash算法 /- function md5(s) return binl2hex(core_md5(str2binl(s), s.length*strsize); function core_md5(x, len) xlen 5 = (xlen 5) | (128 9) 16)+(y 16)+(lsw 16); return (msw 16) | (lsw & 65535); function bit_rol(num, cnt) return (num (32-cnt); function str2binl(str) var bin = Array(); var mask = (1 strsize)-1; var i = 0; while (i 5 = (bini 5) | (str.charCodeAt(i/strsize) & mask) i%32); i = i+strsize; return bin; function binl2hex(binarray) if (hexcase) else var hex_tab = 0123456789abcdef; var str = ; var i = 0; while (i 2) (i%4*8)+4) & 15)+hex_tab.charAt(binarrayi 2) (i%4*8) & 15); i+; return str; var hexcase = 0; var strsize = 8; /-以上不用修改, b = md5(xx); /xx可设为任意字符 s = b.toUpperCase(); /转换成大写 trace(b); trace(s); *发点缓动函数 Math.linearTween = function(t, b, c, d) return c*t/d+b; ; /线性运动函数 Math.easeInQuad = function(t, b, c, d) return c*(t /= d)*t+b; ; /二次缓入函数 Math.easeOutQuad = function(t, b, c, d) return -c*(t /= d)*(t-2)+b; ; /二次缓出函数 Math.easeINOutQuad = function(t, b, c, d) if (t /= d/2)1) return c/2*t*t+b; return -c/2*(-t)*(t-2)-1)+b; ; /二次缓入缓出函数 Math.easeInCubic = function(t, b, c, d) return c*Math.pow(t/d, 3)+b; ; /三次缓入函数 Math.easeOutCubic = function(t, b, c, d) return c*(Math.pow(t/d-1, 3)+1)+b; ; /三次缓出函数 Math.easeINOutCubic = function(t, b, c, d) if (t /= d/2)1) return c/2*Math.pow(t, 3)+b; return c/2*(Math.pow(t-2, 3)+2)+b; ; /三次缓入缓出函数 Math.easeInQuart = function(t, b, c, d) return c*Math.pow(t/d, 4)+b; ; /四次缓入函数 Math.easeOutQuart = function(t, b, c, d) return -c*(Math.pow(t/d-1, 4)-1)+b; ; /四次缓出函数 Math.easeINOutQuart = function(t, b, c, d) if (t /= d/2)1) return c/2*Math.pow(t, 4)+b; return -c/2*(Math.pow(t-2, 4)-2)+b; ; /四次缓入缓出函数 Math.easeInQuint = function(t, b, c, d) return c*Math.pow(t/d, 5)+b; ; /五次缓入函数 Math.easeOutQuint = function(t, b, c, d) return c*(Math.pow(t/d-1, 5)+1)+b; ; /五次缓出函数 Math.easeINOutQuint = function(t, b, c, d) if (t /= d/2)1) return c/2*Math.pow(t, 5)+b; return c/2*(Math.pow(t-2, 5)+2)+b; ; /五次缓入缓出函数 Math.easeInSine = function(t, b, c, d) return c*(1-Math.cos(t/d*(Math.PI/2)+b; ; /正弦缓出函数 Math.easeOutSine = function(t, b, c, d) return c*Math.sin(t/d*(Math.PI/2)+b; ; /正弦缓出函数 Math.easeINOutSine =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论