flash on 2016-12-10
♥0 |
Line 104 |
Modified 2016-12-10 06:40:11 |
MIT License
archived:2017-03-20 16:21:47
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/MsD8
*/
package {
import flash.events.MouseEvent;
import flash.events.Event;
import flash.display.Sprite;
public class FlashTest extends Sprite {
public function FlashTest() {
// vecVert = new Vector.<xVert>(0,false);
// var i:int;
// for(i=0;i<8;i+=1) { vecVert.push( new xVert(i*8,32) ); }
setFrame(frame0);
stage.addEventListener(MouseEvent.MOUSE_DOWN, onMdown);
stage.addEventListener(MouseEvent.MOUSE_UP, onMup);
stage.addEventListener(Event.ENTER_FRAME, onEnter);
}//ctor
public function onMdown(e:MouseEvent):void { mbutton = 1; }
public function onMup(e:MouseEvent):void { mbutton = 0; }
public var frame0:xFrame = new xFrame();
public var frame1:xFrame = new xFrame();
public function setFrame(f:xFrame):void { vecVert = f.vecVert; }
public var mx:Number = 0;
public var my:Number = 0;
public var mbutton:int = 0;
public var mhold:int = 0;
public var vecVert:Vector.<xVert>;
public var gt:int = 0;
public function getMag(ax:Number,ay:Number):Number
{ return Math.sqrt(ax*ax+ay*ay); }
public var curSel:xVert = null;
public function getBtn(ax:Number,ay:Number,aw:Number,ah:Number):Boolean
{
var over:Boolean;
over = (mx<ax||mx>=ax+aw||my<ay||my>=ay+ah)==false;
if (over) { graphics.beginFill(0, 1); }
graphics.drawRect(ax,ay,aw,ah);
if (over) { graphics.endFill(); }
return (over && mhold == 1);
}//getbtn
public function onEnter(e:Event):void
{
graphics.clear();
graphics.lineStyle(2, 0);
var b:xVert; var d:Number;
mx = stage.mouseX;
my = stage.mouseY;
if (getBtn(32,430,32,32))
{ setFrame(vecVert==frame0.vecVert ? frame1:frame0); }
if (mbutton > 0) { mhold += 1; }
else { mhold = 0; curSel = null; }
if (curSel != null)
{ curSel.cx=mx; curSel.cy=my;}
var i:int; var num:int;
var a:xVert; var over:Boolean;
num=vecVert.length;
for(i=0;i<num;i+=1)
{
a = vecVert[i];
over = getMag(a.cx-mx, a.cy-my)<11;
if (curSel == null && mhold == 1 && over)
{ curSel = a; }
graphics.drawCircle(a.cx,a.cy,8);
if (curSel == a || over)
{
graphics.beginFill(0,1);
graphics.drawCircle(a.cx,a.cy,8);
graphics.endFill();
}//endif
}//nexti
graphics.lineStyle(2, 0, 0.5);
var t:Number;
var f0:xFrame;
var f1:xFrame;
var ax:Number; var ay:Number;
t = (gt%25) *0.04;
f0 = frame0;
f1 = frame1;
num=vecVert.length;
for(i=0;i<num;i+=1)
{
a = f0.vecVert[i];
b = f1.vecVert[i];
ax = a.cx + (b.cx-a.cx) * t;
ay = a.cy + (b.cy-a.cy) * t;
graphics.drawCircle(ax,ay,8);
graphics.moveTo(a.cx,a.cy);
graphics.lineTo(b.cx, b.cy);
}//nexti
gt+=1;
}//onenter
}//classend
}
internal class xVert
{
public var cx:Number = 0;
public var cy:Number = 0;
public function xVert(ax:Number=0,ay:Number=0)
{ cx=ax; cy=ay; }
}//xvert
internal class xFrame
{
public var vecVert:Vector.<xVert>;
public function xFrame()
{
vecVert = new Vector.<xVert>(0,false);
var i:int;
for(i=0;i<8;i+=1) { vecVert.push( new xVert(Math.random()*100+64,Math.random()*100+64) ); }
}//ctor
}//xframe