flash on 2013-7-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/gMxA
*/
package {
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.events.Event;
import flash.utils.Dictionary;
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.display.Sprite;
public class FlashTest extends Sprite {
public function FlashTest() {
/*
var pic:Bitmap;
var bm:BitmapData;
bm = new BitmapData(4,4,false, 0);
pic = new Bitmap(bm);
addChild(pic);
pic.scaleX = 16;
pic.scaleY = 16;
var c:uint;
c = 0xFF;
var vecPic:Vector.<uint> = Vector.<uint>(
[0,0,0,c,
0,0,c,c,
0,c,c,c,
c,c,c,c]);
bm.setVector(bm.rect,vecPic);
*/
canvas = new BitmapData(128, 128, false, 0);
pic = new Bitmap(canvas);
addChild(pic);
pic.scaleX =3;
pic.scaleY =3;
initTile();
var num:int;
var i:int;
mwidth = 32;
mheight = 32;
num = mwidth * mheight;
vecGrid = new Vector.<int>(num, false);
for (i = 0; i < num; i++)
{
vecGrid[i] = Math.random() * 2;
}//nexti
stage.addEventListener(Event.ENTER_FRAME, onEnter);
}//ctor
public var tempRect:Rectangle = new Rectangle();
public var tempPnt:Point = new Point();
public function onEnter(e:Event):void
{
canvas.lock();
canvas.fillRect(canvas.rect, 0);
var c:uint;
var i:int;
var k:int;
var t:int;
var yt:int;
var rect:Rectangle = tempRect;
var pnt:Point = tempPnt;
rect.width = 4;
rect.height = 4;
c = 0x00800000;
var w:int;
for (i = 0; i < mheight; i++)
{
yt = i * mwidth;
for (k = 0; k < mwidth; k++)
{
t = vecGrid[yt+k];
if (t > 0) {
rect.x = k * 4;
rect.y = i * 4;
canvas.fillRect(rect, c);
}
if (t > 0)
{
// 1
// 2 X 4
// 8
w = 0;
// if (t == 0) { w+=16;}
if (i == 0) { w += 1; }
else { if (vecGrid[yt+k-mwidth] > 0) { w += 1;} }
if (i == (mheight - 1)) { w+= 8;}
else { if (vecGrid[yt+k+mwidth] > 0) { w += 8;} }
if (k == 0) { w += 2; }
else { if (vecGrid[yt+k-1] > 0) { w+=2;}}
if (k== (mwidth-1)) { w+=4;}
else { if (vecGrid[yt+k+1] > 0) {w+=4;} }
var m:BitmapData;
m = dictTile[w];
if (m == null) { continue; }
pnt.x = k * 4;
pnt.y = i * 4;
canvas.copyPixels(m, m.rect, pnt);
}//endif
}//nextk
}//nexti
canvas.unlock();
}//onenter
public var canvas:BitmapData;
public var pic:Bitmap;
public var vecGrid:Vector.<int>;
public var mwidth:int = 0;
public var mheight:int = 0;
public var dictTile:Dictionary;
public function getPic(vec:Vector.<uint>):BitmapData
{
var a:BitmapData;
a = new BitmapData(4,4,false,0);
a.setVector(a.rect, vec);
return a;
}//getpic
public function initTile():void
{
var t:int;
var c:uint;
var vecPic:Vector.<uint>;
var a:BitmapData;
dictTile = new Dictionary();
c = 0xFF;
// 1
// 2 X 4
// 8
/*
t = 1+ 2+ 4 + 8+16;
vecPic= Vector.<uint>(
[c,0,0,c,
0,0,0,0,
0,0,0,0,
c,0,0,c]);
dictTile[t] = getPic(vecPic);
*/
t = 0;
vecPic= Vector.<uint>(
[0,c,c,0,
c,c,c,c,
c,c,c,c,
0,c,c,0]);
dictTile[t] = getPic(vecPic);
t = 1+ 2+ 4 + 8;
vecPic= Vector.<uint>(
[c,c,c,c,
c,c,c,c,
c,c,c,c,
c,c,c,c]);
dictTile[t] = getPic(vecPic);
t = 4 + 8;
vecPic= Vector.<uint>(
[0,0,0,c,
0,0,c,c,
0,c,c,c,
c,c,c,c]);
dictTile[t] = getPic(vecPic);
t = 2 + 8;
vecPic= Vector.<uint>(
[c,0,0,0,
c,c,0,0,
c,c,c,0,
c,c,c,c]);
dictTile[t] = getPic(vecPic);
t = 1 + 2;
vecPic= Vector.<uint>(
[c,c,c,c,
c,c,c,0,
c,c,0,0,
c,0,0,0]);
dictTile[t] = getPic(vecPic);
t = 1 + 4;
vecPic= Vector.<uint>(
[c,c,c,c,
0,c,c,c,
0,0,c,c,
0,0,0,c]);
dictTile[t] = getPic(vecPic);
t = 4;
vecPic= Vector.<uint>(
[0,0,0,c,
0,0,c,c,
0,0,c,c,
0,0,0,c]);
dictTile[t] = getPic(vecPic);
t = 2;
vecPic= Vector.<uint>(
[c,0,0,0,
c,c,0,0,
c,c,0,0,
c,0,0,0]);
dictTile[t] = getPic(vecPic);
t = 2+4;
vecPic= Vector.<uint>(
[c,c,c,c,
c,c,c,c,
c,c,c,c,
c,c,c,c]);
dictTile[t] = getPic(vecPic);
t = 1;
vecPic= Vector.<uint>(
[c,c,c,c,
0,c,c,0,
0,0,0,0,
0,0,0,0]);
dictTile[t] = getPic(vecPic);
t = 8;
vecPic= Vector.<uint>(
[0,0,0,0,
0,0,0,0,
0,c,c,0,
c,c,c,c]);
dictTile[t] = getPic(vecPic);
t = 1+8;
vecPic= Vector.<uint>(
[c,c,c,c,
c,c,c,c,
c,c,c,c,
c,c,c,c]);
dictTile[t] = getPic(vecPic);
t = 1+8+2;
vecPic= Vector.<uint>(
[c,c,c,c,
c,c,c,c,
c,c,c,c,
c,c,c,c]);
dictTile[t] = getPic(vecPic);
t = 1+8+4;
vecPic= Vector.<uint>(
[c,c,c,c,
c,c,c,c,
c,c,c,c,
c,c,c,c]);
dictTile[t] = getPic(vecPic);
t = 2+4+1;
vecPic= Vector.<uint>(
[c,c,c,c,
c,c,c,c,
c,c,c,c,
c,c,c,c]);
dictTile[t] = getPic(vecPic);
t = 2+4+8;
vecPic= Vector.<uint>(
[c,c,c,c,
c,c,c,c,
c,c,c,c,
c,c,c,c]);
dictTile[t] = getPic(vecPic);
}//inittile
}//classend
}