feb19.jp blog - life is creative!

AS2、AS3で、MovieClipの一部だけをキャプチャする

ブックマークに追加する tags:     

AS2、AS3で、MovieClipの一部だけをキャプチャする

AS2、AS3共にMovieClipをBitmapDataとしてキャプチャするには、BitmapData.drawを使用します。そのとき、たとえばx座標50px、y座標50pxの位置から縦横100pxだけというように、一部だけ切り取ったようにキャプチャする方法のメモです。

(昔に書き残してあったテキストファイルを発掘したので、手直しして公開)


というわけで、mcというMovieClipから、座標(50, 50)から高さと幅が100pxの矩形の中を切り取ります。


■ Action Script 2.0

まずは、AS2のコードから。

//BitmapDataと、Rectangle、MatrixはFlash Player 8からサポートだからか、importしないといけない
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Matrix;
 
//カンバスとなる空のBitmapDataを作成。
//最終的に出来るBitmapDataが100px×100pxなので引数は100, 100
var bmd:BitmapData = new BitmapData(100, 100);	
 
//BitmapDataを格納するための、空のMovieClipを作成
var bm:MovieClip = this.createEmptyMovieClip("bm", this.getNextHighestDepth());
 
//BitmapDataをアタッチ
bm.attachBitmap(bmd, this.getNextHighestDepth());
 
//mcをキャプチャ。今回肝になるのはMatrixとRectangle
bmd.draw(mc, new Matrix(1, 0, 0, 1, -50, -50), null, "normal", new Rectangle(0, 0, 100, 100), false);

まず、MatrixでMovieClipを変形(移動)します。今回、座標(50, 50)の位置からキャプチャしたいので、MovieClipのx座標を-50、y座標を-50すれば、座標(0, 0)の位置からキャプチャすればいいということになります。

new Matrix(1, 0, 0, 1, -50, -50)

次にRectangleで、Bitmapを切り取る部分を指定。座標(0, 0)から高さと幅が100px。こうすることで、キャプチャされたBitmapDataは、一番最初に作成したカンバスとなるBitmapDataの座標(0, 0)の位置に作られます。

キャプチャ例。BitmapData.drawメソッドの、MatrixとRectangleの引数が肝にになる

Matrixの部分は何も指定せずnew Matrix()にしておいて、new Rectangle(50, 50, 100, 100)とすると、キャプチャされたデータは、カンバス用のBitmapDataの座標(50, 50)の位置に貼り付けられてしまい、画像が途中で切れてしまいます。


■ Action Script 3.0

やってることは、ほぼ一緒です。

//カンバスとなる空のBitmapDataを作成
var bmd:BitmapData = new BitmapData(100, 100);
 
//mcをキャプチャ。
bmd.draw(mc, new Matrix(1, 0, 0, 1, -50, -50), null, "normal", new Rectangle(0, 0, 100, 100));
 
//BitmapDataを表示用のコンテナ、Bitmapに格納。
var bm:Bitmap = new Bitmap(bmd);
 
//ステージに表示
addChild(bm);

BitmapDataの部分は、まんま一緒でした。

2009年03月10日15:12

Webデザインブログ

「AS2、AS3で、MovieClipの一部だけをキャプチャする」の関連エントリー

 iTunes Store(Japan)

コメントを投稿

トラックバック

このエントリーのトラックバックURL:
http://feb19.jp/mt/mt-tb.cgi/169

この一覧は、次のエントリーを参照しています: AS2、AS3で、MovieClipの一部だけをキャプチャする:

» Edita.jpからメンバー登録へのご招待 送信元 electrox
〔ザ☆デザイン〕の〔electrox〕です。 是非、〔ザ☆デザイン〕にご参加頂けないしょうか。 このトラックバックのタイトルをクリック頂くとご回答画面に移... [詳しくはこちら]

Navigation

古:USB加湿器
新:AS2、AS3のFileReferenceクラスを使って、オリジナルダウンローダーを作る
トップページ

Recently Entries
Mac でファイルの関連付けを変える(Mac で AIR アプリがアップデート出来ないを解決する方法)
ファイルを右クリックして「情報を見る」を選び、表示されたウィンドウの...
Mac OS X 10.6 Snow Leopard から入ってるフォント「Menlo」がコーディング作業にいい感じ
Xcode でコード書いているとき、Eclipse でコード書くより...
AIR で JSON 形式ファイルの入出力
AIR 祭り開催中。今回はファイル入出力。AS3 で扱っている Ob...
Adobe CS5 ティザーサイトオープン
カウントダウンが始まっています。いよいよ CS5 ですね。globa...
AIR でファイルがドラッグアンドドロップされたことを NativeDragEvent で検知する
最近また AIR が楽しい気がして触っているのですが、 Google...
iPhone アプリ "iBeat - BPM Counter" を発売しました & iPhone インタラクションデザインについて
BPM 計測アプリです。既に似たようなアプリはいくつか発売されている...
AS3 の演算子 ||= について
AS3 だけでつかえるものではないのですが、AS3 での動作を確認し...
iPhone SDK 「カテゴリ」について+NSString の空白文字を除去する
Objective-C では、高位のフレームワークで、低位のフレーム...
Flash CS4 で Flex SDK (mx パッケージ、クラス) を使う
Flex 用のライブラリとかを見ると mx パッケージとか使われてい...
Flash CS5 を予習 ~Text Layout Framework (TLF) 編~
Text Layout Framework (TLF) を使って、F...