Flash制作实例教程:两点间随机折线效果

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

效果如下:(用鼠标任意点击Flash动画)

点击这里下载源文件

映象中以前还是菜鸟时看的一个闪电特效的模式,因为没有看过源文件,一直没去琢磨算法,今天数学课复习三角函数的时候突然想到了这个思路,于是就操起笔在本子上写了一下面的AS.

回家打开Flash, 测试通过.

源文件中有图解.:

* 折线效果

*

* Code by 木頭(13tds.com)

*

* Flash 8.0 ActionScript 2.0

*

***/

Stage.scaleMode = "noScale";

Stage.showMenu = false;

import flash.geom.Point; //注册Point類,如果不用此类可以使用其它方式代替点的位置

var Flash:Function = function (A:Point, B:Point, Q:Number, P:Number) {

_root.clear(); //清屏

_root.moveTo(A.x, A.y); //移動到A點

_root.lineStyle(1); //初始化綫條樣式

len = Math.sqrt(Math.pow(B.x-A.x, 2)+Math.pow(B.y-A.y, 2)); //長度

qlen = len/Q; //平均每段長度

angle = Math.atan2(B.y-A.y, B.x-A.x); //弧度

deg = angle*180/Math.PI; //角度

for (i=1; i<Q; i++) {

temp = {x:A.x+qlen*Math.cos(angle)*i, y:A.y+qlen*Math.sin(angle)*i}; //尋找第i點位置

tempangle = (deg-90)*Math.PI/180; //垂綫的角度

templen = P-random(P*2); //幅度(長度) P ~ -P

lineTo(temp.x+Math.cos(tempangle)*templen, temp.y+Math.sin(tempangle)*templen); //移動到temp點

}

_root.lineTo(B.x, B.y); //到B點

};

var A:Point = new Point(0, 0); //初始A點

var B:Point = new Point(400, 300); //初始B點

var C:Number = 2; //初始段數

setInterval(Flash,50,A,B,10,25)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航