flash on 2013-11-21
インスタンス化したMovieClipなどのDisplayObjectからBitmapDataを取得するには、BitmapData.draw メソッドを使用する。
その際、matrixにDisplayObjectのスケール情報を渡すことで、変形後のBitmapDataを得ることが出来る。
♥0 |
Line 28 |
Modified 2013-11-21 10:39:22 |
MIT License
archived:2017-03-09 16:07:03
ActionScript3 source code
/**
* Copyright necogane ( http://wonderfl.net/user/necogane )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/1fj9
*/
package {
import flash.display.Bitmap;
import flash.geom.Matrix;
import flash.display.BitmapData;
import flash.display.MovieClip;
import flash.display.Sprite;
public class FlashTest extends Sprite {
public function FlashTest() {
//DisplayObject を作成
var _mc:MovieClip = new MovieClip();
_mc.graphics.beginFill(0xFF0000);
_mc.graphics.drawRect(0,0,24,24);
_mc.graphics.endFill();
//[1]テストのためスケールを2倍にする
_mc.scaleX = 2;
_mc.scaleY = 2;
//DisplayObject と同じサイズの BitmapData を作成
//ビットマップデータ1
var _bitmapData1:BitmapData = new BitmapData(_mc.width,_mc.height,false);
//ビットマップデータ2
var _bitmapData2:BitmapData = new BitmapData(_mc.width,_mc.height,false);
//DisplayObject のスケール情報を取得
var _matrix:Matrix = new Matrix();
_matrix.scale(_mc.scaleX,_mc.scaleY);
//BitmapData に書き込み
//[2]ビットマップデータ1はそのまま
_bitmapData1.draw(_mc);
//[3]ビットマップデータ2には、Matrixを渡す
_bitmapData2.draw(_mc,_matrix);
//[4]ビットマップデータ1の方は、[1]のスケールが反映されず作成時の DisplayObject のサイズのまま
var bitmap1:Bitmap = new Bitmap(_bitmapData1);
this.addChild(bitmap1);
//[5]ビットマップデータ2の方は、[1]のスケールが反映され2倍の大きさで表示される
var bitmap2:Bitmap = new Bitmap(_bitmapData2);
bitmap2.x = 48;//位置調整
this.addChild(bitmap2);
}
}
}