/**
* Copyright zsp ( http://wonderfl.net/user/zsp )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/xsmq
*/
//------------------------------------------------------------
package {
import flash.display.Sprite;
import flash.events.Event;
//import flash.display.Bitmap;
[ SWF( width = "465" , height = "465" , backgroundColor = "0x000000" , frameRate = "60" ) ]
public class FlashTest extends Sprite {
private var game:Game;
public function FlashTest() {
//addChild(new Bitmap(screen));
main = this;
Render.setScreen(this);
game = new Game01();
addEventListener(Event.ENTER_FRAME,onEnterFrame);
}
public function onEnterFrame(e:Event):void{
game.mainloop();
}
}
}
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.display.BitmapData;
const WND_W:int = 465;
const WND_H:int = 465;
var screen:BitmapData = new BitmapData(465,465,false,0x00000000);
var main:Sprite;
class Game{
public function Game(){ setup();}
public function setup():void{}
public function mainloop():void{}
}
/*
class Game01 extends Game{
override public function setup():void{}
override public function mainloop():void{}
}
*/
//------------------------------------------------------------
class Game01 extends Game{
private var id01:int;
private var t:int;
private var neko:int;
override public function setup():void{
Resource.Initialize();
var id:int = Render.resisterBitmap(Resource.circle01);
Render.draw(id,100,10);
id01 = Render.resisterRotatedBitmap(Resource.arrow01,40);
neko = Render.resisterBitmap(Resource.neko01);
}
override public function mainloop():void{
t++;
Render.drawBegin();
Render.clear();
for(var i:int = 0; i<20; i++){
var r:Number = i*Math.PI*2/20;
var x:int = 100+Math.cos(r)*60;
var y:int = 100+Math.sin(r)*60;
Render.draw(id01,x,y,r);
}
Render.draw(neko,100,100);
Render.drawEnd();
}
}
/*
**
* Base64化された画像データを表示可能な形式に変換するクラス
*
* 使い方 :
* var data:String = "Base64化された画像データ";
* var display:DisplayObjectContainer = Base64ImageLoader.load(data);
* if (display != null)
* addChild(display);
class Base64ImageLoader
{
import flash.display.DisplayObjectContainer;
import flash.display.Loader;
import flash.utils.ByteArray;
import mx.utils.Base64Decoder;
static public function load(data:String):DisplayObjectContainer
{
var byteArray:ByteArray;
var base64Decoder:Base64Decoder;
var loader:Loader;
base64Decoder = new Base64Decoder();
base64Decoder.decode(data);
try {
byteArray = base64Decoder.toByteArray();
byteArray.position = 0;
} catch (e:Error) {
return null;
}
loader = new Loader();
loader.loadBytes(byteArray);
return loader;
}*/
import flash.display.DisplayObjectContainer;
class Resource{
public static var arrow01:BitmapData;
public static var circle01:BitmapData;
public static var neko01:BitmapData;
public static var usa01:BitmapData;
private static const IMAGE:String =
'R0lGODlhJAAkAIgAAAAAAP99fSH5BAEAAAAALAAAAAAkACQAAAJ1hH+hyO1vQoJASepuhVrjCTLe'+
'9oWkiJYRMp5RS41yqrruXK/szue3aat5Oj3fzVI0BpNKGDPnpPmiDSpH2MQarc8PF6j66rYl8cNq'+
'5rSQyoTlvajEyeFsvcmuztvLNIY4xhcCKDh44RfjFli4cbjEx7bHyFgAADs=';
private static const IMAGE2:String =
'R0lGODlhJAAkAIgAAAAAAAD/ACH5BAEAAAAALAAAAAAkACQAAAJthI+py+0Po5Qh1pmuCxqD2ilX'+
'SH2bQUJaaqJe+3GyjLCNfWM4s9eva/HlDj2gcdEpwpYioerHHL6UymYQlEm2qlWihzPpOm/i7Oxc'+
'rhXT3TIXSuOBoV4kPcO7O+dROHCk5zUHGIiSlFaYqFhYAAA7';
public static function Initialize():void{
//arrow01
var sp:Sprite = new Sprite();
sp.graphics.lineStyle(1,0x00FF00);
sp.graphics.moveTo(3,0);
sp.graphics.lineTo(-3,-3);
sp.graphics.lineTo(-3,3);
sp.graphics.lineTo(3,0);
var m:Matrix = new Matrix();
m.translate(5,5);
arrow01 = new BitmapData(10,10,true,0x00FFFFFF);
arrow01.draw(sp, m);
//circle01
var sp2:Sprite = new Sprite();
sp2.graphics.lineStyle(1,0xFF0000);
sp2.graphics.drawCircle(5,5,4);
circle01 = new BitmapData(10,10,true,0x0);
circle01.draw(sp2);
//image
var img:DisplayObjectContainer = Base64ImageLoader.load(IMAGE2);
if (img != null)
{
var sprite:Sprite = new Sprite();//main.addChild(new Sprite) as Sprite;
sprite.addChild(img);
neko01 = new BitmapData(36,36,true,0x0);
neko01.draw(sprite);
main.addChild(new Bitmap(neko01));
}
/*
var img2:DisplayObjectContainer = Base64ImageLoader.load(IMAGE2);
if (img2!= null)
{
var sprite2:Sprite = addChild(new Sprite) as Sprite;
sprite2.addChild(img2);
sprite2.x = 100;
sprite2.y = 100;
}*/
}
}
class Base64ImageLoader
{
import flash.display.DisplayObjectContainer;
import flash.display.Loader;
import flash.utils.ByteArray;
import mx.utils.Base64Decoder;
static public function load(data:String):DisplayObjectContainer
{
var byteArray:ByteArray;
var base64Decoder:Base64Decoder;
var loader:Loader;
base64Decoder = new Base64Decoder();
base64Decoder.decode(data);
try {
byteArray = base64Decoder.toByteArray();
byteArray.position = 0;
} catch (e:Error) {
return null;
}
loader = new Loader();
loader.loadBytes(byteArray);
return loader;
}
}
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Point;
import flash.geom.Matrix;
class Render{
public static var screen: BitmapData = new BitmapData(465,465,false,0x0);
public static var ImageList:Vector.<Vector.<BitmapData>> = new Vector.<Vector.<BitmapData>>();
private static var idx:int = 0;
public static function setScreen(s:Sprite):void{
s.addChild(new Bitmap(screen));
}
public static function drawBegin():void{
screen.lock();
}
public static function drawEnd():void{
screen.unlock();
}
public static function clear():void{
screen.fillRect(screen.rect,0x000000);
}
public static function resisterBitmap(src_bmp:BitmapData):int{
var list:Vector.<BitmapData> = new Vector.<BitmapData>();
var bmp:BitmapData = new BitmapData(src_bmp.width,src_bmp.height, true, 0x0000000);
bmp.draw(src_bmp,null, null, null, null, true);
list.push(bmp);
ImageList.push(list);
idx++;
return idx -1;
}
public static function resisterRotatedBitmap(src_bmp:BitmapData, n:int):int{
var list:Vector.<BitmapData> = new Vector.<BitmapData>();
var hsz:int = src_bmp.width/2;
for (var i:int= 0; i<n; i++){
var matrix:Matrix;
matrix = new Matrix();
matrix.translate( -hsz, -hsz);
matrix.rotate(i *2*Math.PI/ n)
matrix.translate( hsz,hsz);
var bmp:BitmapData = new BitmapData(src_bmp.width,src_bmp.height, true, 0x0000000);
bmp.draw(src_bmp,matrix, null, null, null, true);
list.push(bmp);
}
ImageList.push(list);
idx++;
return idx -1;
}
public static function draw(id:int,x:Number,y:Number, r:Number= 0):void{
var rot_idx:int =0;
if (r>0) rot_idx= r * ImageList[id].length/ (2*Math.PI);
if ((id >= ImageList.length)||(id<0)||(rot_idx>= ImageList[id].length)||(rot_idx<0)) return;
var img :BitmapData = ImageList[id][rot_idx];
screen.copyPixels(img,img.rect,new Point(x-img.width/2,y-img.height/2));
}
}