/**
* Copyright y_tti ( http://wonderfl.net/user/y_tti )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/JR8I
*/
//増え続けるので注意。
//1,2,3 ダー!!
package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.GradientType;
import flash.display.Shape;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.geom.Matrix;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
import flash.text.TextFormatAlign;
import flash.utils.Timer;
[SWF(width = "465", height = "465", frameRate = "30", backgroundColor = "0x000000")]
public class ytt_degital extends Sprite
{
private const WIDTH:Number = 10;
private const HEIGHT:Number = 10;
private const MARGIN:Number = 1;
private var _wCount:int;
private var _hCount:int;
private var _bgBm:Bitmap;
private var _canvas:BitmapData;
private var _partsBmd:BitmapData;
private const NUMROW:int = 5;
private const NUM1:Array = [
1,1,0,0,0,
0,1,0,0,0,
0,1,0,0,0,
0,1,0,0,0,
1,1,1,0,0,
];
private const NUM2:Array = [
1,1,1,1,1,
0,0,0,0,1,
1,1,1,1,1,
1,0,0,0,0,
1,1,1,1,1,
];
private const NUM3:Array = [
1,1,1,1,1,
0,0,0,0,1,
1,1,1,1,1,
0,0,0,0,1,
1,1,1,1,1,
];
private var _nums:Array = [NUM1,NUM2,NUM3];
private var _objects:Array = [];
public function ytt_degital()
{
Wonderfl.capture_delay( 5 );
addEventListener(Event.ADDED_TO_STAGE , _init );
}
private function _init(e:Event=null):void {
removeEventListener(Event.ADDED_TO_STAGE , _init );
_wCount = stage.stageWidth / WIDTH;
_hCount = stage.stageWidth / HEIGHT;
var parts:Shape = new Shape();
var m:Matrix = new Matrix();
//背景用矩形
parts.graphics.beginFill(0x333333,1);
parts.graphics.drawRect(0,0,WIDTH,HEIGHT);
var bgBmd:BitmapData = new BitmapData(stage.stageWidth,stage.stageHeight,false,0x0);
for(var ix:int = 0;ix < _wCount;ix++ ){
for(var iy:int = 0;iy < _hCount;iy++ ){
m.identity();
m.translate( ix*WIDTH+ix*MARGIN , iy*HEIGHT+iy*MARGIN );
bgBmd.draw(parts,m);
}
}
_bgBm = new Bitmap(bgBmd);
addChild(_bgBm);
//数字用矩形
m.identity();
m.createGradientBox(WIDTH,HEIGHT,90 * Math.PI / 180);
parts.graphics.clear();
parts.graphics.beginGradientFill(GradientType.LINEAR,[0xecc802,0xc08800],[1,1],[0,255],m);
parts.graphics.drawRect(0,0,WIDTH,HEIGHT);
_partsBmd = new BitmapData(WIDTH,HEIGHT,false);
_partsBmd.draw(parts);
//キャンバス
_canvas = new BitmapData(stage.stageWidth,stage.stageHeight,true,0x00FFFFFF);
addChild(new Bitmap(_canvas));
var timer:Timer = new Timer(300);
timer.addEventListener(TimerEvent.TIMER , _update );
timer.start();
var changeTimer:Timer = new Timer(300);
changeTimer.addEventListener(TimerEvent.TIMER , _change );
changeTimer.start();
}
private function _update(e:TimerEvent):void {
var m:Matrix = new Matrix();
_canvas.lock();
_canvas.fillRect(new Rectangle(0,0,stage.stageWidth,stage.stageHeight),0x00FFFFFF);
for(var i:int = 0;i < _objects.length;i++ ){
var numDisplay:NumDisplay = _objects[i];
var num:Array = _nums[numDisplay.numidx];
for(var iy:int = 0;iy < NUMROW;iy++ ){
for(var ix:int = 0;ix < NUMROW;ix++ ){
if(num[ix+iy*NUMROW]){
var dx:int = (numDisplay.xGrid + ix) * WIDTH + (numDisplay.xGrid + ix)*MARGIN;
var dy:int = (numDisplay.yGrid + iy) * HEIGHT + (numDisplay.yGrid + iy)*MARGIN;
m.identity();
m.translate( dx , dy );
_canvas.draw(_partsBmd,m);
}
}
}
}
_canvas.unlock();
}
private function _change(e:TimerEvent):void {
_objects.push(new NumDisplay(_nums.length , int(Math.random()*_wCount) , int(Math.random()*_hCount) ));
}
}
}
import flash.display.Sprite;
class NumDisplay extends Sprite{
public var xGrid:int;
public var yGrid:int;
private var _numidxMax:int;
private var _numidx:int = 0;
public function NumDisplay($numidxMax:int , $xGrid:int=0 , $yGrid:int=0 ){
_numidxMax = $numidxMax;
xGrid = $xGrid;
yGrid = $yGrid;
}
public function get numidx():int {
_numidx++;
_numidx = (_numidx < _numidxMax) ? _numidx : 0;
return _numidx;
}
}