/**
* Copyright mutantleg ( http://wonderfl.net/user/mutantleg )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/k1UGO
*/
package {
import flash.geom.ColorTransform;
import flash.geom.Rectangle;
import flash.geom.Matrix;
import flash.display.BitmapData;
import flash.events.Event;
import flash.display.Sprite;
public class FlashTest extends Sprite {
public function FlashTest() {
stage.quality = "LOW";
skin = new BitmapData(64,64, true, 0);
var i:int;
/*
for (i = 0; i < 16; i++)
{
fillRect(skin, Math.random()*64,Math.random()*64, Math.random()*24,Math.random()*24,0xFF808080);
fillRect(skin, Math.random()*64,Math.random()*64, Math.random()*24,Math.random()*24,0xFF000000 );
}//nexti */
// fillRect(skin, 8,8,32,32, 0xFF000000);
fillRect(skin, 12,12,24,24, 0xFF000000);
skinTeam = skin.clone();
skinTeam.colorTransform(skinTeam.rect, new ColorTransform(1,1,1,1, 255,255,255,0));
for (i = 0; i < 32; i++)
{
fillRect(skin, Math.random()*64,Math.random()*64, Math.random()*16,Math.random()*8,0);
}//nexti
stage.addEventListener(Event.ENTER_FRAME, onEnter);
}//ctor
public var canvas:BitmapData = new BitmapData(465,465, false, 0);
public var skinTeam:BitmapData;
public var skin:BitmapData;
public var gt:int = 0;
public var ct:ColorTransform = new ColorTransform();
public function onEnter(e:Event):void
{
canvas.unlock();
canvas.lock();
canvas.fillRect(canvas.rect, 0xff202020);
var ax:Number; var ay:Number;
var k:int; var i:int;
for (i =0; i<16;i++)
for (k =0; k < 16; k++)
{
ax = k*32; ay = i*32 + Math.sin(k+gt*0.3)*16;
ct.redMultiplier = i/16;
ct.greenMultiplier = k/16;
ct.blueMultiplier = Math.sin(gt*0.1);
drawSprite2(canvas, skinTeam, ax,ay,0,false,false,1,1,null,ct,false);
drawSprite2(canvas, skin, ax,ay,0);
}//nextk
graphics.clear();
graphics.beginBitmapFill(canvas,null,false,false);
graphics.drawRect(0,0,465,465);
graphics.endFill();
gt += 1;
}//onenter
public var tempMat:Matrix = new Matrix();
public var mirMat:Matrix = new Matrix();
public var tempRect:Rectangle = new Rectangle(0,0,0,0);
public function fillRect(to:BitmapData, ax:Number, ay:Number, aw:Number, ah:Number, c:uint):void
{
ax |= 0; ay |= 0;
tempRect.x = ax; tempRect.y = ay; tempRect.width = aw; tempRect.height = ah;
to.fillRect(tempRect, c);
}//drawrect
public function drawSprite2(to:BitmapData, spr:BitmapData, ax:Number, ay:Number,
ang:Number = 0, xmir:Boolean = false, ymir:Boolean = false,
scalex:Number = 1.0, scaley:Number = 1.0,
blend:String = null, trans:ColorTransform=null, smooth:Boolean=false):void
{
var aw:Number; var ah:Number; var rad:Number;
rad = spr.width > spr.height ? spr.width : spr.height;
if (to.width < ax - rad) { return; } if (to.height < ay - rad) { return; }
if (0 > ax + rad) { return; } if (0 > ay + rad) { return; }
aw = spr.width * 0.5; ah = spr.height * 0.5;
mirMat.identity();
mirMat.tx = -aw; mirMat.ty = -ah;
//fix (should mirror before rotate -- (how this affects xy scale?) (seems to be ok)
mirMat.scale(xmir? -scalex:scalex, ymir? -scaley:scaley );
mirMat.rotate(ang);
mirMat.translate( ax, ay );
to.draw(spr, mirMat, trans, blend, null, smooth);
}//drawsprite2
}//classend
}