BitmapDataクラスを学習しよう!
いままで何となく使ってきたが、基礎からやり直すのだ!
今回の課題は...。
new BitmapData(), BitmapData.draw(), MovieClip.attachBitmap() の3つ。
要 Flash Player 8 以上_root に、ムービークリップ(インスタンス名: pict_mc, display_mc) を配置。
pict_mc には、画像またはムービークリップを配置。
display_mc は、空のムービークリップ。
また、ムービークリップ(インスタンス名: drawBtn, attachBtn, resetBtn) を配置。
_root 第1フレームに
import flash.display.BitmapData;
var data_bd:BitmapData;
createBitmapData();
function createBitmapData():Void {
data_bd = new BitmapData(240, 180, true);
}
function drawPict():Void {
data_bd.draw(pict_mc);
}
function attachDisplay():Void {
display_mc.attachBitmap(data_bd, 0);
}
drawBtn.onRelease = function():Void {
drawPict();
};
attachBtn.onRelease = function():Void {
this.enabled = false;
attachDisplay();
};
resetBtn.onRelease = function():Void {
resetBitmapData();
};
function resetBitmapData():Void {
data_bd.dispose();
attachBtn.enabled = true;
createBitmapData();
}
と記述。
基本的な流れは、次の通り。
// BitmapData オブジェクトを生成
var data_bd:BitmapData = new BitmapData(240, 180, true);
// ソースイメージを BitmapData オブジェクト上に描画
data_bd.draw(pict_mc);
// BitmapData オブジェクトをムービークリップに関連付け
display_mc.attachBitmap(data_bd, 0);
BitmapData オブジェクト(data_bd)を生成して、draw() すると、
BitmapData オブジェクト(data_bd)上に、ソースイメージ(pict_mc)が描画される。
しかし、これだけでは、
BitmapData オブジェクトは見えない。
# 上のswfでは、分かりやすく見えるようにしてある。
そこで、MovieClip.attachBitmap() を用いて、
BitmapData オブジェクト(data_bd)をムービークリップ(display_mc)と関連付けすると、
display_mc に描画したソースイメージが表示される。
# MovieClip.attachBitmap() してから、draw() でも表示される。
drawBtn, attachBtn を押す順序を変えてみるとか、
pict_mc の image を変えてから drawBtn を押してみるとかすると、
ちょっと分かった気になれるかも。
# frog はムービークリップで、背景部分は透過している。
# これを draw() し続けると「塗り重ねられていく」のだ。
BitmapData コンストラクタ
public BitmapData(width:Number, height:Number, [transparent:Boolean], [fillColor:Number])
指定された幅と高さで BitmapData オブジェクトを作成します。fillColor パラメータに値を指定した場合、ビットマップのすべてのピクセルにその色が設定されます。
使用できるバージョン
ActionScript 1.0、Flash Player 8
パラメータ
width:Number
ビットマップイメージの幅(ピクセル単位)です。
height:Number
ビットマップイメージの高さ(ピクセル単位)です。
transparent:Boolean (オプション)
ビットマップイメージがピクセル単位の透明度をサポートするかどうかを定義します。デフォルト値は true です(透明)。完全に透明なビットマップを作成するには、transparent パラメータの値を true に、fillColor パラメータの値を 0x00000000(または0) に設定します。
fillColor:Number (オプション)
ビットマップイメージ領域を塗りつぶすのに使用する32ビット ARGB カラー値です。デフォルト値は 0xFFFFFFFF(白) です。
transparent パラメータに true を渡さない限り、ビットマップはデフォルトで不透明として作成されます。不透明のビットマップを作成した後、それを透明のビットマップに変更することはできません。不透明のビットマップに含まれるすべてのピクセルは、24ビットのカラーチャンネル情報だけを使用します。ビットマップを transparent と定義した場合、すべてのピクセルは、アルファ透明チャンネルを含む32ビットのカラーチャンネル情報を使用します。
BitmapData オブジェクトの最大の幅と高さは2880ピクセルです。width または height に2880よりも大きい値を指定すると、新しいインスタンスは作成されません。
attachBitmap (MovieClip.attachBitmap メソッド)
public attachBitmap(bmp:BitmapData, depth:Number, [pixelSnapping:String], [smoothing:Boolean]) : Void
ビットマップイメージをムービークリップに割り当てます。
使用できるバージョン
ActionScript 1.0、Flash Player 8
パラメータ
bmp:flash.display.BitmapData
透明または不透明なビットマップイメージ。
depth:Number
ビットマップイメージを配置するムービークリップ内の深度を指定する整数。
pixelSnapping:String (オプション)
ピクセルへの吸着モード。auto、 always、never のいずれかを指定できます。デフォルトのモードは auto です。
smoothing:Boolean (オプション)
スムージングモードを有効にする場合は true 、無効にする場合は false を指定します。スムージングモードはデフォルトでは有効です。
ビットマップをムービークリップに割り当てた後、ムービークリップからそのビットマップオブジェクトへの参照が作成されます。ビットマップを割り当てるとき、ビットマップの外見に影響を与える pixelSnapping パラメータおよび smoothing パラメータを指定できます。
オブジェクトをムービークリップに追加すると、そのオブジェクトにはアクセスできなくなります。depth パラメータ、pixelSnapping パラメータ、および smoothing パラメータは、attachBitmap() メソッド呼び出し中にのみ設定できますが、その後は変更できません。
最初に createEmptyMovieClip() メソッドを使用して空のムービークリップを作成し、次に attachBitmap() メソッドを使用します。これにより、たとえばムービークリップの matrix プロパティを使用して、ムービークリップに変形を適用し、ビットマップを変形できます。
ピクセルへの吸着では、ビットマップが配置される位置は、部分ピクセルの上ではなく、最も近い整数ピクセル値の位置になります。ピクセルへの吸着モードには、次の3つのモードがあります。
● auto モード。このモードでは、ビットマップを伸縮または回転しない限り、ピクセルへの吸着が行われます。
● always モード。このモードでは、ビットマップの伸縮または回転とは無関係に、常にピクセルへの吸着が行われます。
● never モード。このモードでは、ムービークリップのピクセルへの吸着がオフになります。
スムージングモードは、拡大・縮小時のイメージの外観に影響を与えます。
関連記事:
Flash Professional 8 (1)関連記事:
モザイク処理 (1)関連記事:
モザイク処理 (2)関連記事:
画像の色情報を取得する (1)関連記事:
画像の色情報を取得する (2)関連記事:
BitmapDataでノイズ生成 (1)関連記事:
BitmapDataでノイズ生成 (2)関連記事:
BitmapDataでノイズ生成 (3)関連記事:
BitmapDataを基礎から学ぶのだ! (1)関連記事:
BitmapDataを基礎から学ぶのだ! (2)関連記事:
画像のスムージング設定 (2)関連記事:
BitmapDataを基礎から学ぶのだ! (3)関連記事:
BitmapDataを基礎から学ぶのだ! (4)関連記事:
[AS2.0] BitmapManagerクラスに挑戦! (1)