AS3でDisplayObjectをBitmapDataに変換してみたよ。
ActionScript3 でのコネタ。 Sprite や MovieClip を BitmapData に変換出来るみたいなので試してみたよ。
とりあえず、確認も含めて普通に表示させてみる。
// 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
まだ登録されていません。