Spriteをサムネイルに描画するテスト
forked from テキスト表示用 (diff: 40)
ActionScript3 source code
/**
* Copyright yprops ( http://wonderfl.net/user/yprops )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/u0W6
*/
// forked from yprops's テキスト表示用
package
{
import flash.geom.Matrix;
import flash.geom.Rectangle;
import flash.events.*;
import flash.display.*;
import flash.text.*;
public class DebugText extends Sprite
{
//------------main-----------------------
public function main() :void{
addDebLine("適当なSpriteをサムネイル内にいい感じにdraw()する。");
addDebLine("指定Matrixを適用したSpriteの、指定Rectangle部分が表示されるよう描かれる大きさを調整してdraw()。");
//適当なSprite用意
var pre :Sprite = makeRectSp(100);
pre.x = 100;
pre.y = 100;
addChild(pre);
//サムネイル用意
var thumb :Bitmap;
var bmd :BitmapData = new BitmapData(50,50,false,0x00FF00);
thumb = new Bitmap(bmd);
thumb.x = 175;
thumb.y = 175;
addChild(thumb);
//Matrix 指定 実際には pre.transform.matrix を使うことを想定
var mtr :Matrix = new Matrix();
mtr.rotate(0.5);
//Rectangle 指定 実際には pre.parent 座標系での指定を想定
var rct :Rectangle = new Rectangle(-20,0,120,150);
//MatrixにRectangleを加味してdraw() (rct.width != 0, rct.height != 0 であること)
mtr.translate(-rct.x, -rct.y);
mtr.scale(bmd.width / rct.width, bmd.height / rct.height);
bmd.draw(pre, mtr);
}
private function makeRectSp(size :Number) :Sprite{
var sp :Sprite = new Sprite();
var g :Graphics = sp.graphics;
g.beginGradientFill(GradientType.LINEAR, [0xFF0000, 0x0000FF], [1,1], [0,255]);
g.drawCircle(50,50,50);
g.drawRect(0,0,size,size);
g.endFill();
return sp;
}
//------------general---------------------
public function DebugText(){
if(stage)init();
addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(ev:Event = null) :void{
removeEventListener(Event.ADDED_TO_STAGE, init);
addDeb(450, 450);
main();
}
private var deb :TextField;
private function addDeb(w:uint, h:uint) :void{
deb = new TextField();
deb.wordWrap = true;
deb.width = w;
deb.height = h;
deb.border = true;
deb.borderColor = 0;
deb.background = true;
deb.backgroundColor = 0x99ffffff;
deb.text = "beginDebugText-------\n\n";
addChild(deb);
}
private function addDebLine(...args) :void{
deb.appendText(args.join(" ") + "\n");
deb.scrollV = deb.maxScrollV;
}
}
}
