flash on 2014-12-8
♥0 |
Line 76 |
Modified 2014-12-08 05:34:27 |
MIT License
archived:2017-03-30 11:51:54
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/71IL
*/
package {
import flash.events.Event;
import flash.display.Sprite;
public class FlashTest extends Sprite {
public function FlashTest() {
var a:xBlob;
var i:int;
vecBlob = new Vector.<xBlob>(0,false);
for (i = 0; i < 16; i++)
{ vecBlob.push(new xBlob()); }
stage.addEventListener(Event.ENTER_FRAME, onEnter);
}//ctor
public var vecBlob:Vector.<xBlob>;
public var cx:Number = 230;
public var cy:Number = 64;
public var gt:int = 0;
public function onEnter(e:Event):void
{
graphics.clear();
graphics.lineStyle(2, 0);
gt += 1;
var ax:Number; var ay:Number;
ax = 230; ay = 230;
graphics.drawCircle(ax,ay, 16);
var ang:Number;
var mx:Number; var my:Number;
mx = stage.mouseX;
my = stage.mouseY;
ang = Math.atan2(my-ay, mx-ax);
graphics.moveTo(ax,ay);
graphics.lineTo(ax+Math.cos(ang)*8,ay+Math.sin(ang)*8);
graphics.drawCircle(cx, cy, 16);
ang = Math.atan2(cy-my, cx-mx);
graphics.moveTo(cx,cy);
graphics.lineTo(cx+Math.cos(ang)*8, cy+Math.sin(ang)*8);
var kx:Number; var ky:Number;
var mw:Number;
mw = 30; //Math.abs(Math.sin(gt*0.1)*80);
kx = mx + Math.cos(ang) * (30+mw);
ky = my + Math.sin(ang) * (30+mw);
graphics.drawCircle(kx, ky, 4);
cx += (kx -cx)*0.1;
cy += (ky -cy)*0.1;
// graphics.moveTo(ax,ay);
// graphics.lineTo(cx,cy);
var i:int; var num:int; var a:xBlob; var b:xBlob;
num = vecBlob.length - 1;
a = vecBlob[0]; a.cx = cx; a.cy = cy;
a = vecBlob[num]; a.cx = ax; a.cy = ay;
var m:int;
for (m = 0; m < 16; m++)
for (i = 0; i < num; i++)
{
a = vecBlob[i];
b = vecBlob[i+1];
kx = (a.cx + b.cx) *0.5;
ky = (a.cy + b.cy) *0.5;
a.cx += (kx-a.cx)*0.2;
a.cy += (ky-a.cy)*0.2;
b.cx += (kx-b.cx)*0.2;
b.cy += (ky-b.cy)*0.2;
/*
ang = Math.atan2(b.cy-a.cy, b.cx-a.cx);
kx = b.cx + Math.cos(ang) * 32;
ky = b.cy + Math.sin(ang) * 32;
a.cx += (kx-a.cx)*0.1;
a.cy += (ky-a.cy)*0.1;
*/
}//nexti
num = vecBlob.length;
for (i = 0; i < num; i++)
{
a = vecBlob[i];
graphics.drawCircle(a.cx,a.cy,12);
}//nexti2
}//onenter
public function getMag(ax:Number, ay:Number):Number
{ return Math.sqrt(ax*ax+ay*ay); }
}//classend
}
internal class xBlob
{
public var cx:Number = 0;
public var cy:Number = 0;
}//xblob