flash on 2014-12-25
♥0 |
Line 109 |
Modified 2014-12-25 11:03:25 |
MIT License
archived:2017-03-30 11:50:57
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/z6cU
*/
package {
import flash.ui.Keyboard;
import flash.events.KeyboardEvent;
import flash.events.Event;
import flash.display.Sprite;
public class FlashTest extends Sprite {
public function FlashTest() {
vecRoom = new Vector.<xRoom>(0, false);
var a:xRoom; var i:int;
var ax:Number; var ay:Number;
ax = 0; ay = 0;
for (i = 0; i < 16; i++)
{
a = new xRoom();
a.cx = ax; a.cy = ay;
a.cw = 160; a.ch = 120;
if (Math.random()<0.25)
{
a.cw = Math.random() <0.5 ? 320 : 160;
a.ch = Math.random() < 0.5? 120 :240;
}
vecRoom.push(a);
var n:int;
var k:int; var b:xBlob;
n = 4 + Math.random() * 8;
for (k = 0; k < n; k++)
{
b = new xBlob();
b.cx = a.cx + Math.random() * a.cw;
b.cy = a.cy + Math.random() * a.ch;
a.vecBlob.push(b);
}//nextk
if (Math.random()<0.5) {ax+=a.cw;}
else {ay+=a.ch;}
}//nexti
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKdown);
stage.addEventListener(Event.ENTER_FRAME, onEnter);
}//ctor
public function onKdown(e:KeyboardEvent):void
{
var ms:Number;
ms = 64;
if (e.keyCode == Keyboard.DOWN) { cy+=ms;}
if (e.keyCode == Keyboard.UP) { cy-=ms;}
if (e.keyCode == Keyboard.LEFT) { cx-=ms;}
if (e.keyCode == Keyboard.RIGHT) { cx+=ms;}
}//onkdown
public var vecRoom:Vector.<xRoom>;
public var camx:Number = 0;
public var camy:Number = 0;
public var cx:Number = 80;
public var cy:Number = 60;
public function isOver(ax:Number,ay:Number,aw:Number,ah:Number):Boolean
{
if (cx < ax) { return false; }
if (cy < ay) { return false; }
if (cx > ax+aw) { return false; }
if (cy > ay+ah) { return false; }
return true;
}//isover
public function onEnter(e:Event):void
{
graphics.clear();
graphics.lineStyle(2, 0);
camx = cx - 230; camy = cy - 230;
var sx:Number; var sy:Number;
sx = Math.floor(camx); sy = Math.floor(camy);
var i:int; var num:int; var a:xRoom;
num = vecRoom.length;
for (i = 0; i < num; i++)
{
a = vecRoom[i];
if (isOver(a.cx,a.cy,a.cw,a.ch) )
{
graphics.beginFill(0xa0a0a0, 1);
graphics.drawRect(a.cx-sx,a.cy-sy,a.cw,a.ch);
graphics.endFill();
upBlob(a.vecBlob,sx,sy);
continue;
}
graphics.drawRect(a.cx-sx,a.cy-sy,a.cw,a.ch);
}//nexti
graphics.drawCircle(cx-sx,cy-sy,4);
}//onenter
public function upBlob(vec:Vector.<xBlob>, sx:Number, sy:Number):void
{
var i:int; var num:int; var a:xBlob;
num = vec.length;
for (i = 0; i < num; i++)
{
a = vec[i];
graphics.drawCircle(a.cx-sx,a.cy-sy, 5);
}//nexti
}//upblob
}//classend
}
internal class xRoom
{
public var cx:Number = 0;
public var cy:Number = 0;
public var cw:Number = 320;
public var ch:Number = 240;
public var vecBlob:Vector.<xBlob> = new Vector.<xBlob>(0,false);
}//xroom
internal class xBlob
{
public var cx:Number = 0;
public var cy:Number = 0;
}//xblob