AS3でDisplayObjectをBitmapDataに変換してみたよ。

ActionScript3 でのコネタ。 SpriteMovieClipBitmapData に変換出来るみたいなので試してみたよ。

とりあえず、確認も含めて普通に表示させてみる。

//  Application.as
public function Application()
{
    //  Stageの設定。
    stage.align = StageAlign.TOP_LEFT;
    stage.scaleMode = StageScaleMode.NO_SCALE;
    stage.quality = StageQuality.BEST;

    //  表示用のSpriteを作成。
    var s:Sprite = new Sprite();
    s.graphics.beginFill(0x000000, 1.0);
    s.graphics.drawRect(0, 0, 50, 50);
    s.graphics.endFill();

    //  今は普通に表示する。
    addChild(s);
}

ココから、コレを BitmapData に変換して行く。

//  Application.as
public function Application()
{
    //  Stageの設定。(上と同じ)

    //  表示用のSpriteを作成。(上と同じ)

    //  BitmapDataに変換して表示させる。
    var b:BitmapData = new BitmapData(s.width, s.height);
    b.draw(s);
    addChild(new Bitmap(b));
}

さっきまで addChild してた Sprite を、 addChild しなくてもちゃんと表示されたハズ! 何も変わらないから分かりにくいけども。

で、ちょこっと工夫してやると、 scale を弄ってるヤツもちゃんと表示出来たよ。

//  Application.as
public function Application()
{
    //  Stageの設定。(上と同じ)

    //  表示用のSpriteを作成。(上と同じ)

    //  Spriteのスケールを変更。
    s.scaleX = 10;  //width 50 -> 500
    s.scaleY = 10;  //height 50 -> 500

    //  scale調整用のMatrixを作成。
    var m:Matrix = new Matrix();
    m.scale(s.scaleX, s.scaleY);

    //  BitmapDataに変換して表示させる。
    var b:BitmapData = new BitmapData(s.width, s.height);
    b.draw(s, m);   //ココでMatrixを渡す。
    addChild(new Bitmap(b));
}

ちゃんとスケーリングされて表示されれば成功。 ColorTransform 弄ってる場合でも、 draw の引数に渡してあげればちゃんと処理してくれるっぽい。

子要素に TextField とか入ってる状態で変換してみても、 ちゃんと表示されたよ! 使いどころは全然分からないけども、 とても勉強になりましたとさ :-)

Posted at: 
2008/02/24 06:39:42
0 Comments
0 TrackBacks
Tags: 
ActionScript
Flash
Trackback: 
http://humming.via-kitchen.com/2008/02/24/convert-2-bitmapdata-on-as3/trackback/

TrackBacks

まだ登録されていません。

Comments

まだ登録されていません。

Add Comment

Add Comment