import flash.display.*;
import flash.geom.*;
//Java風グラフィックスラッパー
class JGraphics {
//色定数
public static var
AQUA:Number =( 0<<16)+(255<<8)+255,
BLACK:Number =( 0<<16)+( 0<<8)+ 0,
BLUE:Number =( 0<<16)+( 0<<8)+255,
FUCHSIA:Number=(255<<16)+( 0<<8)+255,
GRAY:Number =(128<<16)+(128<<8)+128,
GREEN:Number =( 0<<16)+(128<<8)+ 0,
LIME:Number =( 0<<16)+(255<<8)+ 0,
MAROON:Number =(128<<16)+( 0<<8)+ 0,
NAVY:Number =( 0<<16)+( 0<<8)+128,
OLIVE:Number =(128<<16)+(128<<8)+ 0,
PURPLE:Number =(128<<16)+( 0<<8)+128,
RED:Number =(255<<16)+( 0<<8)+ 0,
SILVER:Number =(192<<16)+(192<<8)+192,
TEAL:Number =( 0<<16)+(128<<8)+128,
WHITE:Number =(255<<16)+(255<<8)+255,
YELLOW:Number =(255<<16)+(255<<8)+ 0;
//変数
private var mc:MovieClip; //ムービークリップ
private var bd:BitmapData; //BMPデータ
private var color:Number; //色
private var shape:MovieClip; //シェイプ
private var label:TextField; //ラベル
private var format:TextFormat;//フォーマット
//コンストラクタ
public function JGraphics(parent:MovieClip,w:Number,h:Number) {
//ムービークリップ
parent.createEmptyMovieClip("mc",parent.getNextHighestDepth());
mc=parent["mc"];
//BMPデータ
bd=new BitmapData(w,h,false,0xffffff);
//色
color=0x000000;
//シェイプ
mc.createEmptyMovieClip("shape",0);
shape=mc["shape"];
//ラベル
mc.createTextField("label",1,0,0,0,0);
label=mc["label"];
label.autoSize="left";
//フォーマット
format=new TextFormat();
format.font ="_等幅";
format.color=0x000000;
setFontSize(12);
//追加
mc.attachBitmap(bd,2);
}
//フォントサイズの指定(ピクセル単位)
public function setFontSize(size:Number):Void {
var i:Number;
label.text="■";
for (i=size+10;i>=1;i--) {
format.size=i;
label.setTextFormat(format);
if (label.textWidth<=size) break;
}
}
//文字列幅の取得
public function stringWidth(text:String):Number {
label.text=text;
label.setTextFormat(format);
return label.textWidth;
}
//文字列高さの取得
public function stringHeight(text:String):Number {
label.text=text;
label.setTextFormat(format);
return label.textHeight;
}
//BMPデータの取得
public function getBitmapData():BitmapData {
return bd;
}
//色の取得
public function getColorOfRGB(r:Number,g:Number,b:Number):Number {
return (r<<16)+(g<<8)+b;
}
//色の取得
public function getColorOfName(name:Number):Number {
return name;
}
//色の指定
public function setColor(color:Number):Void {
this.color=color;
format.color=color;
}
//ラインの描画
public function drawLine(x0:Number,y0:Number,x1:Number,y1:Number):Void {
shape.clear();
shape.lineStyle(0,color);
shape.moveTo(x0,y0);
shape.lineTo(x1,y1);
bd.draw(shape);
}
//矩形の描画
public function drawRect(x:Number,y:Number,w:Number,h:Number):Void {
shape.clear();
shape.lineStyle(0,color);
shape.moveTo(x,y);
shape.lineTo(x+w,y);
shape.lineTo(x+w,y+h);
shape.lineTo(x,y+h);
shape.lineTo(x,y);
bd.draw(shape);
}
//塗り潰し矩形の描画
public function fillRect(x:Number,y:Number,w:Number,h:Number):Void {
shape.clear();
shape.beginFill(color);
shape.lineStyle(0,color);
shape.moveTo(x,y);
shape.lineTo(x+w,y);
shape.lineTo(x+w,y+h);
shape.lineTo(x,y+h);
shape.lineTo(x,y);
shape.endFill();
bd.draw(shape);
}
//文字列の描画
public function drawString(text:String,x:Number,y:Number):Void {
if (text==null) return;
label.text=text;
label.setTextFormat(format);
var pos:Matrix=new Matrix();
pos.translate(
x-(label._width -label.textWidth)/2,
y-(label._height-label.textHeight)/2-label.textHeight);
bd.draw(label,pos);
}
//イメージの描画
public function drawImage(source:Object,x:Number,y:Number,
sx:Number,sy:Number,sw:Number,sh:Number):Void {
if (source==null) return;
var pos:Matrix=new Matrix();
pos.translate(x-sx,y-sy);
if (sx==undefined) {
bd.draw(source,pos);
} else {
bd.draw(source,pos,null,null,new Rectangle(x,y,sw,sh));
}
}
}
|