flash on 2015-8-17
♥0 |
Line 77 |
Modified 2015-08-17 08:52:40 |
MIT License
archived:2017-03-30 11:43:56
ActionScript3 source code
/**
* Copyright mutantleg ( http://wonderfl.net/user/mutantleg )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/sYjy
*/
package {
import flash.events.Event;
import flash.display.Sprite;
public class FlashTest extends Sprite {
public function FlashTest() {
graphics.clear();
graphics.lineStyle(2, 0);
vecLine = new Vector.<xLine>(0,false);
var ax:Number; var ay:Number; var ta:Number;
var a:xLine; var i:int; var num:int;
for (i=0;i< 16;i+=1)
{
a = new xLine();
ax = Math.random()*265+100;
ay = Math.random() *265+100;
ay = i*32;
a.cx = ax+Math.random()*64;
a.cy = ay+Math.random()*64;
a.gx = ax+Math.random()*64;
a.gy = ay+Math.random()*64;
vecLine.push(a);
ta = Math.atan2(a.gy-a.cy, a.gx-a.cx);
a.ny = -Math.cos(ta);
a.nx = Math.sin(ta);
}//nexti
stage.addEventListener(Event.ENTER_FRAME, onEnter);
}//ctor
public var vecLine:Vector.<xLine>;
public function onEnter(e:Event):void
{
graphics.clear();
graphics.lineStyle(2, 0);
var ax:Number; var ay:Number; var ta:Number;
var a:xLine; var i:int; var num:int;
var b:xLine;
num = vecLine.length - 1;
for (i=0;i<num;i+=1)
{
a = vecLine[i];
b = vecLine[i+1];
// var d:Number;
// d = (a.cx-b.cx)*b.nx + (a.cy-b.cy)*b.ny;
// if (d < 0)
if (a.cy < b.cy)
if (a.gy < b.gy)
{ vecLine[i+1] =a; vecLine[i] = b; }
}//nexti
num = vecLine.length;
for (i=0;i<num;i+=1)
{
a = vecLine[i];
graphics.moveTo(a.cx,a.cy);
graphics.lineTo(a.gx,a.gy);
ax = a.cx+(a.gx-a.cx)*0.5;
ay = a.cy+(a.gy-a.cy)*0.5;
graphics.moveTo(ax,ay);
graphics.lineTo(ax+a.nx*8,ay+a.ny*8);
}//nexti
graphics.lineStyle(1, 0);
for (i=0;i<num;i+=1)
{
a = vecLine[i];
if (a.ny < 0) { continue; }
ax = a.cx+(a.gx-a.cx)*0.5;
ay = a.cy+(a.gy-a.cy)*0.5;
if (i==0){ graphics.moveTo(ax,ay);}
graphics.lineTo(ax,ay);
}//nexti
}//onenter
}//classend
}
internal class xLine
{
public var cx:Number = 0;
public var cy:Number = 0;
public var gx:Number = 0;
public var gy:Number = 0;
public var nx:Number = 0;
public var ny:Number = 0;
}//xline