flash on 2015-4-16
♥0 |
Line 105 |
Modified 2015-04-16 04:29:44 |
MIT License
archived:2017-03-30 11:46:25
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/i909
*/
package {
import flash.events.MouseEvent;
import flash.events.Event;
import flash.display.Sprite;
public class FlashTest extends Sprite {
public function FlashTest() {
vecAct = new Vector.<xAct>(0,false);
var i:int; var a:xAct;
for (i=0;i<32;i++)
{
a =new xAct(); vecAct.push(a);
a.cx = Math.random()*460;
a.cy = Math.random()*460;
}
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 mbutton:int = 0;
public var mode:int = 0;
public var wx:Number = 0;
public var wy:Number = 0;
public function onEnter(e:Event):void
{
graphics.clear();
graphics.lineStyle(2, 0);
var mx:Number; var my:Number;
mx = stage.mouseX; my = stage.mouseY;
drawAct(vecAct);
if (mbutton > 0)
if (mode == 0)
{
mode = 1; wx = mx; wy = my;
}
var ax:Number; var ay:Number;
var bx:Number; var by:Number;
ax = mx < wx ? mx :wx;
ay = my < wy ? my :wy;
bx = mx > wx ? mx :wx;
by = my > wy ? my :wy;
if (mbutton > 0)
if (mode == 1)
{
graphics.drawRect(ax,ay, bx-ax,by-ay);
drawOverAct(vecAct, ax,ay,bx,by);
}
if (mode == 0)
{ drawOverAct(vecAct,mx-8,my-8,mx+8,my+8); }
if (mbutton <= 0) if (mode > 0)
{ mode = 0; setOverAct(vecAct, ax,ay,bx,by); }
var ms:Number;ms=8;
graphics.moveTo(mx,my-ms); graphics.lineTo(mx,my+ms);
graphics.moveTo(mx-ms,my); graphics.lineTo(mx+ms,my);
}//onenter
public var vecAct:Vector.<xAct> = new Vector.<xAct>(0,false);
public function drawAct(vec:Vector.<xAct>):void
{
var i:int; var num:int; var a:xAct;
num=vec.length;
for(i=0;i<num;i++)
{
a = vec[i];
graphics.drawCircle(a.cx,a.cy, a.rad);
if (a.mode > 0) { graphics.drawRect(a.cx-8,a.cy-8, 16,16); }
}
}//drawact
public function drawOverAct(vec:Vector.<xAct>, ax:Number,ay:Number,bx:Number,by:Number):void
{
var i:int; var num:int; var a:xAct;
num=vec.length;
for(i=0;i<num;i++)
{
a = vec[i];
if (a.cx+a.rad < ax) { continue; }
if (a.cy+a.rad < ay) { continue; }
if (a.cx-a.rad > bx) { continue; }
if (a.cy-a.rad > by) { continue; }
graphics.drawRect(a.cx-10,a.cy-10, 20,20);
}
}//drawact
public function setOverAct(vec:Vector.<xAct>, ax:Number,ay:Number,bx:Number,by:Number):void
{
var i:int; var num:int; var a:xAct;
num=vec.length;
for(i=0;i<num;i++)
{
a = vec[i]; a.mode = 0;
if (a.cx+a.rad < ax) { continue; }
if (a.cy+a.rad < ay) { continue; }
if (a.cx-a.rad > bx) { continue; }
if (a.cy-a.rad > by) { continue; }
a.mode = 1;
}
}//drawact
}//classend
}
internal class xAct
{
public var cx:Number = 0;
public var cy:Number = 0;
public var rad:Number = 4;
public var mode:int = 0;
}//xrect