您的位置:首页 > 其它

Flex 4 一个RandomLine特效的练习

2011-04-12 11:58 375 查看
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="init()">
<s:layout>
<s:BasicLayout/>
</s:layout>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<fx:Script>
<!--[CDATA[
import mx.core.UIComponent;

public var lineNum:Number=20;

public var Parray:Array=new Array();

public var start:Boolean=false;
public var xv:Array=new Array();
public var yv:Array=new Array();
public var xp:Array=new Array();
public var yp:Array=new Array();
public var xt:Array=new Array();
public var yt:Array=new Array();
public var time:Timer=new Timer(600);
public var lineArray:Array=new Array();
public var index:Number=0;
public var lineLength:Number=15;
public var color:Array=new Array();

public function init():void
{
for(var i:Number=0;i<lineNum;i++)
{
xv.push(0);
yv.push(0);
xp.push(0);
yp.push(0);
xt.push(0);
yt.push(0);
color.push(Math.random()*0xffffff);
}
time.addEventListener(TimerEvent.TIMER,CreatePoint);
time.start();
}

public function getPoint():Point
{
return Point(new Point(Math.random()*this.width,Math.random()*this.height));

}
public function CreatePoint(evt:TimerEvent):void
{
if(start==false)
{
this.addEventListener(Event.ENTER_FRAME,speed);
start=!start;
}
for(var i:Number=0;i<lineNum;i++)
{
Parray[i]=getPoint();
}
}

public function speed(evt:Event):void
{
for(var i:Number=0;i<lineNum;i++)
{
xv[i] = xv[i] + (Parray[i].x - xp[i]) * 1.500000E-001;
yv[i] = yv[i] + (Parray[i].y - yp[i]) * 1.500000E-001;
xv[i] = xv[i]* 9.000000E-001;
yv[i] = yv[i] * 9.000000E-001;
xt[i]=xp[i];
yt[i]=yp[i];
xp[i] = xp[i] + xv[i];
yp[i] = yp[i] + yv[i];
darwLine(xt[i],yt[i],xp[i],yp[i],i);
}

}

public function darwLine(startX:Number,startY:Number,endX:Number,endY:Number,i:Number):void
{
var compLine:UIComponent=new UIComponent();
var line : Shape = new Shape();
line.graphics.lineStyle(10, color[i], 1);
line.graphics.moveTo(startX, startY);
line.graphics.lineTo(endX, endY);

compLine.addChild(line);
this.addElement(compLine);

if(lineArray.length>=lineLength)
{
if(index==lineLength)
{
index=0;
}
this.removeElement(lineArray[index]);
lineArray[index++]=compLine;
}
else
{
lineArray.push(compLine);
}

}
]]-->
</fx:Script>
</s:Application>


这是我根据“一批老外的超牛25行代码参赛作品的源文件”中最短的一个项目制作而成,原来用as,我用flex。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: