パッケージ | flash.display |
クラス | public class BitmapData |
継承 | BitmapData Object |
実装 | IBitmapDrawable |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0, Flash Lite 4 |
flash.display.Loader
クラスを使ってロードされるビットマップイメージの BitmapData にアクセスすることもできます。
このクラスを使用すると、ビットマップのレンダリング処理を Flash Player 内部の表示更新ルーチンから分離できます。BitmapData オブジェクトを直接操作することで複雑なイメージを作成できるので、ベクターデータのコンテンツを連続的に再描画するフレーム単位のオーバーヘッドを避けることができます。
BitmapData クラスのメソッドは、(ビットマップ以外の表示オブジェクトでは使用可能な)フィルターを使って設定できないような効果をサポートします。
BitmapData オブジェクトには、ピクセルデータの配列が含まれています。このデータは、完全に不透明なビットマップ、またはアルファチャンネルデータを含む透明なビットマップを表現できます。いずれの種類の BitmapData オブジェクトも 32 bit 整数のバッファーとして保存されます。各 32 bit 整数は、ビットマップ内の 1 つのピクセルのプロパティを決定します。
各 32 bit 整数は、アルファ透明度とピクセルの赤緑青(ARGB)の値を表す 4 つの 8 bit チャンネル値(0 ~ 255)の組み合わせです。(ARGB 値では、最上位バイトがアルファチャンネル値を表し、続いて赤、緑、青を表します)。
この 4 つのチャンネル(アルファ、赤、緑、青)は、BitmapData.copyChannel()
メソッド、または DisplacementMapFilter.componentX
および DisplacementMapFilter.componentY
プロパティで使用する場合に数値として表されます。これらの数値は、BitmapDataChannel クラスの次の定数によって表されます。
-
BitmapDataChannel.ALPHA
-
BitmapDataChannel.RED
-
BitmapDataChannel.GREEN
-
BitmapDataChannel.BLUE
Bitmap オブジェクトの bitmapData
プロパティを使用すると、BitmapData オブジェクトを Bitmap オブジェクトに関連付けることができます。
Graphics.beginBitmapFill()
メソッドを使用すると、BitmapData オブジェクトを使って Graphics オブジェクトを塗りつぶすことができます。
AIR ランタイムでは、DockIcon、Icon、InteractiveIcon、SystemTrayIcon の各クラスが、アイコンのビットマップイメージを定義する BitmapData オブジェクトの配列である bitmaps
プロパティを含んでいます。
AIR 1.5 および Flash Player 10 では、BitmapData オブジェクトの最大サイズは幅または高さで 8,191 ピクセルです。総ピクセル数が 16,777,215 ピクセルを超えることはできません。(したがって、BitmapData オブジェクトの幅が 8,191 ピクセルであった場合、高さは 2,048 ピクセルまでしか指定できません)。Flash Player 9 以前および AIR 1.1 以前では、制限は高さ 2,880 ピクセル、幅 2,880 ピクセルです。
AIR 3 および Flash Player 11 以降では、BitmapData オブジェクトのサイズの制限はなくなりました。ビットマップの最大サイズはオペレーティングシステムに依存します。
BitmapData オブジェクトのいずれかのメソッドやプロパティを呼び出したときに、BitmapData オブジェクトが無効なものであった場合(例えば height == 0
かつ width == 0
の場合)や、dispose() で既に破棄されたものであった場合は、ArgumentError エラーがスローされます。
関連する API エレメント
flash.desktop.DockIcon.bitmaps
flash.display.Graphics.beginBitmapFill()
flash.desktop.Icon.bitmaps
flash.desktop.InteractiveIcon.bitmaps
flash.display.Loader
flash.desktop.SystemTrayIcon.bitmaps
プロパティ | 定義元 | ||
---|---|---|---|
constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。 | Object | ||
height : int [読み取り専用]
ビットマップイメージの高さ(ピクセル単位)です。 | BitmapData | ||
rect : Rectangle [読み取り専用]
ビットマップイメージのサイズと位置を定義する矩形です。 | BitmapData | ||
transparent : Boolean [読み取り専用]
ビットマップイメージがピクセル単位の透明度をサポートするかどうかを定義します。 | BitmapData | ||
width : int [読み取り専用]
ビットマップイメージの幅(ピクセル単位)です。 | BitmapData |
メソッド | 定義元 | ||
---|---|---|---|
指定された幅と高さで BitmapData オブジェクトを作成します。 | BitmapData | ||
applyFilter(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, filter:BitmapFilter):void
ソースイメージとフィルターオブジェクトを受け取り、フィルターを適用して得られるイメージを生成します。 | BitmapData | ||
新しい BitmapData オブジェクトとして、元のインスタンスのクローンを返します。含まれるビットマップはまったく同じコピーになります。 | BitmapData | ||
ColorTransform オブジェクトを使用して、ビットマップイメージの特定領域のカラー値を調整します。 | BitmapData | ||
2 つの BitmapData オブジェクトを比較します。 | BitmapData | ||
copyChannel(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, sourceChannel:uint, destChannel:uint):void
別の BitmapData オブジェクトまたは現在の BitmapData オブジェクトの 1 つのチャンネルのデータを、現在の BitmapData オブジェクトのチャンネルに転送します。 | BitmapData | ||
copyPixels(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, alphaBitmapData:BitmapData = null, alphaPoint:Point = null, mergeAlpha:Boolean = false):void
イメージ間のピクセル操作(伸長、回転、カラー効果なし)を高速に実行するルーチンを提供します。 | BitmapData | ||
ピクセルデータの矩形領域からバイト配列を入力します。 | BitmapData | ||
BitmapData オブジェクトの格納に使用されるメモリを解放します。 | BitmapData | ||
draw(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:flash.geom:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void
Flash ランタイムのベクターレンダラーを使用して、source 表示オブジェクトをビットマップイメージ上に描画します。 | BitmapData | ||
drawWithQuality(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:flash.geom:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false, quality:String = null):void
Flash ランタイムのベクターレンダラーを使用して、source 表示オブジェクトをビットマップイメージ上に描画します。 | BitmapData | ||
選択したコンプレッサアルゴリズムを使用してこの BitmapData オブジェクトを圧縮し、新しい ByteArray オブジェクトを返します。 | BitmapData | ||
指定された ARGB カラーで矩形領域のピクセルを塗りつぶします。 | BitmapData | ||
(x, y) 座標を始点として所定の色で塗りつぶすことにより、イメージに対する塗りつぶし処理を実行します。 | BitmapData | ||
BitmapData オブジェクト、ソース矩形、フィルターオブジェクトを指定して、applyFilter() メソッド呼び出しによって影響を受けるターゲット矩形を決定します。 | BitmapData | ||
(findColor パラメーターが true に設定されている場合)ビットマップイメージ内の指定された色のすべてのピクセルを完全に囲む矩形領域を判別します。または、(findColor パラメーターが false に設定されている場合)指定された色ではないすべてのピクセルを完全に囲む矩形領域を判別します。 | BitmapData | ||
BitmapData オブジェクトの特定ポイント (x, y) の RGB ピクセル値を表す整数を返します。 | BitmapData | ||
アルファチャンネルデータと RGB データを含む ARGB カラー値を返します。 | BitmapData | ||
ピクセルデータの矩形領域からバイト配列を生成します。 | BitmapData | ||
ピクセルデータの矩形領域からベクター配列を生成します。 | BitmapData | ||
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | ||
BitmapData オブジェクトの 256 値のバイナリ数のヒストグラムを計算します。 | BitmapData | ||
hitTest(firstPoint:Point, firstAlphaThreshold:uint, secondObject:Object, secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1):Boolean
1 つのビットマップイメージと、ポイント、矩形、または他のビットマップイメージとの間でピクセルレベルのヒットを検出します。 | BitmapData | ||
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | ||
この BitmapData オブジェクトが変更されたときに、BitmapData オブジェクトを参照するすべてのオブジェクト(例えば Bitmap オブジェクト)が更新されないように、イメージをロックします。 | BitmapData | ||
merge(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redMultiplier:uint, greenMultiplier:uint, blueMultiplier:uint, alphaMultiplier:uint):void
ソースイメージとターゲットイメージをチャンネルごとにブレンドします。 | BitmapData | ||
noise(randomSeed:int, low:uint = 0, high:uint = 255, channelOptions:uint = 7, grayScale:Boolean = false):void
ランダムノイズを表すピクセルでイメージを塗りつぶします。 | BitmapData | ||
paletteMap(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redArray:Array = null, greenArray:Array = null, blueArray:Array = null, alphaArray:Array = null):void
最大で 4 つのカラーパレットデータ配列(各チャンネルごとに 1 つの配列)を使用して、イメージ内のカラーチャンネル値をマッピングし直します。 | BitmapData | ||
perlinNoise(baseX:Number, baseY:Number, numOctaves:uint, randomSeed:int, stitch:Boolean, fractalNoise:Boolean, channelOptions:uint = 7, grayScale:Boolean = false, offsets:Array = null):void
Perlin ノイズイメージを生成します。 | BitmapData | ||
pixelDissolve(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, randomSeed:int = 0, numPixels:int = 0, fillColor:uint = 0):int
ソースイメージからターゲットイメージへのピクセルディゾルブ、または同じイメージを使用したピクセルディゾルブを実行します。 | BitmapData | ||
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | ||
所定の (x, y) ピクセル量だけイメージをスクロールします。 | BitmapData | ||
BitmapData オブジェクトの 1 つのピクセルを設定します。 | BitmapData | ||
BitmapData オブジェクトの 1 つのピクセルにカラー値とアルファ透明度を設定します。 | BitmapData | ||
バイト配列をピクセルデータの矩形領域に変換します。 | BitmapData | ||
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | ||
Vector をピクセルデータの矩形領域に変換します。 | BitmapData | ||
threshold(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, operation:String, threshold:uint, color:uint = 0, mask:uint = 0xFFFFFFFF, copySource:Boolean = false):uint
指定されたしきい値と比較してイメージ内のピクセル値をテストし、テストに適合したピクセルに新しいカラー値を設定します。 | BitmapData | ||
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのストリング表現を返します。 | Object | ||
この BitmapData オブジェクトが変更されたときに、BitmapData オブジェクトを参照するすべてのオブジェクト(例えば Bitmap オブジェクト)が更新されるように、イメージをロック解除します。 | BitmapData | ||
指定されたオブジェクトのプリミティブな値を返します。 | Object |
height | プロパティ |
rect | プロパティ |
transparent | プロパティ |
transparent:Boolean
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0, Flash Lite 4 |
ビットマップイメージがピクセル単位の透明度をサポートするかどうかを定義します。この値を設定できるのは、true
を、コンストラクターの transparent
パラメーターに渡すことによって BitmapData オブジェクトを作成する場合だけです。BitmapData オブジェクトを作成した後、transparent
プロパティの値が true
であるかどうかを確認することにより、このオブジェクトがピクセルごとの透明度をサポートするかどうかを検査できます。
実装
public function get transparent():Boolean
width | プロパティ |
BitmapData | () | コンストラクター |
public function BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0, Flash Lite 4 |
指定された幅と高さで BitmapData オブジェクトを作成します。fillColor
パラメーターに値を指定した場合、ビットマップのすべてのピクセルにその色が設定されます。
false
を transparent
パラメーターに渡さない限り、デフォルトではビットマップが透明として作成されます。不透明のビットマップを作成した後、それを透明のビットマップに変更することはできません。不透明のビットマップに含まれるすべてのピクセルは、24 bit のカラーチャンネル情報だけを使用します。ビットマップを透明に定義した場合、すべてのピクセルは、アルファ透明チャンネルを含む 32 ビットのカラーチャンネル情報を使用します。
AIR 1.5 および Flash Player 10 では、BitmapData オブジェクトの最大サイズは幅または高さで 8,191 ピクセルです。総ピクセル数が 16,777,215 ピクセルを超えることはできません。(したがって、BitmapData オブジェクトの幅が 8,191 ピクセルであった場合、高さは 2,048 ピクセルまでしか指定できません)。Flash Player 9 以前および AIR 1.1 以前では、高さの限界は 2,880 ピクセルで幅の限界は 2,880 ピクセルです。 幅または高さに 2880 より大きい値を指定すると、新しいインスタンスは作成されません。
パラメーターwidth:int — ビットマップイメージの幅(ピクセル単位)です。
| |
height:int — ビットマップイメージの高さ(ピクセル単位)です。
| |
transparent:Boolean (default = true ) — ビットマップイメージがピクセル単位の透明度をサポートするかどうかを指定します。デフォルト値は true です(透明)。完全に透明なビットマップを作成するには、transparent パラメーターの値を true に、fillColor パラメーターの値を 0x00000000(または 0)に設定します。transparent プロパティを false に設定すると、レンダリングのパフォーマンスが若干向上することがあります。
| |
fillColor:uint (default = 0xFFFFFFFF ) — ビットマップイメージ領域を塗りつぶすのに使用する 32 bit ARGB カラー値です。デフォルト値は 0xFFFFFFFF(白)です。
|
例外
ArgumentError — 幅や高さが最大サイズを超えています。
|
applyFilter | () | メソッド |
public function applyFilter(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, filter:BitmapFilter):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0 |
ソースイメージとフィルターオブジェクトを受け取り、フィルターを適用して得られるイメージを生成します。
このメソッドはビルトインフィルターオブジェクトの動作に依存します(このオブジェクトは、入力ソース矩形によって影響を受けるターゲット矩形を決定します)。
フィルターを適用した後、結果として得られるイメージが入力イメージよりも大きくなることがあります。例えば、BlurFilter クラスを使用してソース矩形 (50,50,100,100) とターゲットポイント (10,10) をぼかすと、ターゲットイメージで変更される領域は、ぼかしのために、(10,10,60,60) よりも大きくなります。これは、applyFilter()
呼び出し時に内部で発生します。
sourceRect
パラメーター(sourceBitmapData
パラメーターのパラメーター)が内側領域(200 x 200 のイメージ内の (50,50,100,100) など)である場合、フィルターは、sourceRect
パラメーターの外側にあるソースピクセルを使用して、ターゲット矩形を生成します。
sourceBitmapData
パラメーターとして指定されたオブジェクトと BitmapData オブジェクトが同じであれば、アプリケーションはオブジェクトの一時コピーを使ってフィルターを実行します。最適なパフォーマンスを得るには、このような状況を避けてください。
パラメーター
sourceBitmapData:BitmapData — 使用する入力ビットマップイメージです。ソースイメージは、別の BitmapData オブジェクトにすることも、現在の BitmapData インスタンスを参照することもできます。
| |
sourceRect:Rectangle — 入力として使用するソースイメージの領域を定義する矩形です。
| |
destPoint:Point — ソース矩形の左上隅に対応する、ターゲットイメージ(現在の BitmapData インスタンス)内のポイントです。
| |
filter:BitmapFilter — フィルター適用処理に使用されるフィルターオブジェクトです。それぞれの種類のフィルターには、次のような要件があります。
|
例外
TypeError — sourceBitmapData、sourceRect、destPoint、または filter が null です。
| |
IllegalOperationError — BitmapData オブジェクトの透明度は、フィルター操作と互換性がありません。
|
関連する API エレメント
flash.filters.BlurFilter
flash.filters.ColorMatrixFilter
flash.filters.ConvolutionFilter
flash.filters.DisplacementMapFilter
flash.filters.DropShadowFilter
flash.filters.GlowFilter
flash.display.DisplayObject.filters
例 ( この例の使用方法 )
import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Point; import flash.geom.Rectangle; import flash.filters.BlurFilter; var bmd:BitmapData = new BitmapData(80, 30, false, 0xFFCC00); var rect:Rectangle = new Rectangle(10, 10, 40, 10); bmd.fillRect(rect, 0xFF0000); var pt:Point = new Point(10, 10); var filter:BlurFilter = new BlurFilter(); bmd.applyFilter(bmd, rect, pt, filter); var bm:Bitmap = new Bitmap(bmd); addChild(bm);
clone | () | メソッド |
public function clone():BitmapData
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0, Flash Lite 4 |
新しい BitmapData オブジェクトとして、元のインスタンスのクローンを返します。含まれるビットマップはまったく同じコピーになります。
戻り値BitmapData — 元のオブジェクトと同一の新しい BitmapData オブジェクトです。
|
例 ( この例の使用方法 )
import flash.display.Bitmap; import flash.display.BitmapData; var bmd1:BitmapData = new BitmapData(100, 80, false, 0x00000000); var bmd2:BitmapData = bmd1.clone(); bmd1.setPixel32(1, 1, 0xFFFFFFFF); trace(bmd1.getPixel32(1, 1).toString(16)); // ffffffff trace(bmd2.getPixel32(1, 1).toString(16)); // ff000000 var bm1:Bitmap = new Bitmap(bmd1); this.addChild(bm1); var bm2:Bitmap = new Bitmap(bmd2); bm2.x = 110; this.addChild(bm2);
colorTransform | () | メソッド |
public function colorTransform(rect:Rectangle, colorTransform:flash.geom:ColorTransform):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0, Flash Lite 4 |
ColorTransform
オブジェクトを使用して、ビットマップイメージの特定領域のカラー値を調整します。矩形がビットマップイメージの境界と一致する場合、このメソッドはイメージ全体のカラー値を変換します。
パラメーター
rect:Rectangle — ColorTransform オブジェクトが適用されるイメージの領域を定義する Rectangle オブジェクトです。
| |
colorTransform:flash.geom:ColorTransform — 適用されるカラー変換値を記述する ColorTransform オブジェクトです。
|
例外
TypeError — rect または colorTransform が null です。
|
関連する API エレメント
例 ( この例の使用方法 )
import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Rectangle; import flash.geom.ColorTransform; var bmd:BitmapData = new BitmapData(80, 30, false, 0xFF0000); var cTransform:ColorTransform = new ColorTransform(); cTransform.alphaMultiplier = 0.5 var rect:Rectangle = new Rectangle(0, 0, 40, 30); bmd.colorTransform(rect, cTransform); var bm:Bitmap = new Bitmap(bmd); addChild(bm);
compare | () | メソッド |
public function compare(otherBitmapData:BitmapData):Object
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0, Flash Lite 4 |
2 つの BitmapData オブジェクトを比較します。2 つの BitmapData オブジェクトのサイズ(幅と高さ)が同じであれば、メソッドは新しい BitmapData オブジェクトを返します。この新しいオブジェクトの各ピクセルは、2 つのソースオブジェクトのピクセル間の「差分」です。
- 2 つのピクセルが等しい場合、差分ピクセルは 0x00000000 です。
- 2 つのピクセルの RGB 値(アルファ値は無視)が異なる場合、差分ピクセルは 0xRRGGBB です。ここで、RR/GG/BB は赤、緑、および青の各チャンネル間の個別の差分値(ソースオブジェクトのピクセル値から
otherBitmapData
オブジェクトのピクセル値を引いた値)を表します。この場合、アルファチャネルの差分は無視されます。 - アルファチャンネルの値だけが異なる場合、ピクセル値は 0xZZFFFFFF です。ここで、ZZ はアルファ値の差分(ソースオブジェクトのアルファ値から
otherBitmapData
オブジェクトのアルファ値を引いた値)を表します。
例えば、次のような 2 つの BitmapData オブジェクトがあるとします。
var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFF8800); var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCCC6600); var diffBmpData:BitmapData = bmd1.compare(bmd2) as BitmapData; trace ("0x" + diffBmpData.getPixel(0,0).toString(16); // 0x332200
注意:2 つの BitmapData オブジェクトを塗りつぶすために使用されるそれぞれの色の RGB 値はわずかに異なります(0xFF0000 と 0xFFAA00)。compare()
メソッドの結果として新しい BitmapData オブジェクトが生成され、その各ピクセルは 2 つのビットマップ間の RGB 値の差分を示します。
次のような 2 つの BitmapData オブジェクトがあるとします。両者の RGB カラーは同じですが、アルファ値は異なります。
var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFFAA00); var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCFFAA00); var diffBmpData:BitmapData = bmd1.compare(bmd2) as BitmapData; trace ("0x" + diffBmpData.getPixel32(0,0).toString(16); // 0x33ffffff
compare()
メソッドの結果として新しい BitmapData オブジェクトが生成され、その各ピクセルは 2 つのビットマップ間のアルファ値の差分を示します。
BitmapData オブジェクトが等しい(幅、高さおよびピクセル値が同じ)場合、このメソッドは数値 0 を返します。
BitmapData オブジェクトの幅が等しくない場合、このメソッドは数値 -3 を返します。
BitmapData オブジェクトの高さが等しくない場合、幅が同じであれば、このメソッドは数値 -4 を返します。
次の例では、幅の異なる 2 つの Bitmap オブジェクトを比較します(それぞれの幅は 50 と 60)。
var bmd1:BitmapData = new BitmapData(100, 50, false, 0xFFFF0000); var bmd2:BitmapData = new BitmapData(100, 60, false, 0xFFFFAA00); trace(bmd1.compare(bmd2)); // -4
パラメーター
otherBitmapData:BitmapData — ソース BitmapData オブジェクトと比較される BitmapData オブジェクトです。
|
Object — 2 つの BitmapData オブジェクトのサイズ(幅と高さ)が同じであれば、このメソッドは、2 つのオブジェクト間の差分を示す新しい BitmapData オブジェクトを返します(主な説明の項を参照してください)。2 つの BitmapData オブジェクトが等しい場合、このメソッドは数値 0 を返します。BitmapData オブジェクトの幅が等しくない場合、メソッドは数値 -3 を返します。BitmapData オブジェクトの高さが等しくない場合、メソッドは数値 -4 を返します。
|
例外
TypeError — otherBitmapData が null です。
|
例 ( この例の使用方法 )
import flash.display.Bitmap; import flash.display.BitmapData; var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFFAA00); var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCFFAA00); var diffBmpData:BitmapData = BitmapData(bmd1.compare(bmd2)); var diffValue:String = diffBmpData.getPixel32(1, 1).toString(16); trace (diffValue); // 33ffffff var bm1:Bitmap = new Bitmap(bmd1); addChild(bm1); var bm2:Bitmap = new Bitmap(bmd2); addChild(bm2); bm2.x = 60;
copyChannel | () | メソッド |
public function copyChannel(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, sourceChannel:uint, destChannel:uint):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0, Flash Lite 4 |
別の BitmapData オブジェクトまたは現在の BitmapData オブジェクトの 1 つのチャンネルのデータを、現在の BitmapData オブジェクトのチャンネルに転送します。ターゲット BitmapData オブジェクト内のその他のチャンネルのデータはすべて保たれます。
ソースチャンネルの値とターゲットチャンネルの値は、次のいずれかになります。
BitmapDataChannel.RED
BitmapDataChannel.GREEN
BitmapDataChannel.BLUE
BitmapDataChannel.ALPHA
パラメーター
sourceBitmapData:BitmapData — 使用する入力ビットマップイメージです。ソースイメージは、別の BitmapData オブジェクトにすることも、現在の BitmapData オブジェクトを参照することもできます。
| |
sourceRect:Rectangle — ソース側の Rectangle オブジェクトです。ビットマップ内のより小さな領域のチャンネルデータだけをコピーするには、BitmapData オブジェクトのサイズ全体よりも小さいソース矩形を指定します。
| |
destPoint:Point — 新しいチャンネルデータが配置される矩形領域の左上隅を表すターゲット Point オブジェクトです。ある特定の領域のチャンネルデータだけをターゲットイメージ内の別の領域にコピーするには、(0,0) 以外のポイントを指定します。
| |
sourceChannel:uint — ソースチャンネルです。BitmapDataChannel クラスの値(BitmapDataChannel.RED 、BitmapDataChannel.BLUE 、BitmapDataChannel.GREEN 、BitmapDataChannel.ALPHA )を使用します。
| |
destChannel:uint — ターゲットチャンネルです。BitmapDataChannel クラスの値(BitmapDataChannel.RED 、BitmapDataChannel.BLUE 、BitmapDataChannel.GREEN 、BitmapDataChannel.ALPHA )を使用します。
|
例外
TypeError — sourceBitmapData、sourceRect、または destPoint が null です。
|
関連する API エレメント
例 ( この例の使用方法 )
import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Rectangle; import flash.geom.Point; var bmd:BitmapData = new BitmapData(100, 80, false, 0x00FF0000); var rect:Rectangle = new Rectangle(0, 0, 20, 20); var pt:Point = new Point(10, 10); bmd.copyChannel(bmd, rect, pt, BitmapDataChannel.RED, BitmapDataChannel.BLUE); var bm:Bitmap = new Bitmap(bmd); this.addChild(bm);
copyPixels | () | メソッド |
public function copyPixels(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, alphaBitmapData:BitmapData = null, alphaPoint:Point = null, mergeAlpha:Boolean = false):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0, Flash Lite 4 |
イメージ間のピクセル操作(伸長、回転、カラー効果なし)を高速に実行するルーチンを提供します。このメソッドは、ソースイメージの矩形領域を、ターゲット BitmapData オブジェクトのターゲットポイントにある同じサイズの矩形領域にコピーします。
alphaBitmap
パラメーターと alphaPoint
パラメーターを含めれば、2 番目のイメージをソースイメージのアルファソースとして使用できます。ソースイメージにアルファデータがある場合、両方のアルファデータセットを使用して、ソースイメージのピクセルがソースイメージ上に合成されます。alphaPoint
パラメーターは、アルファイメージ内のポイントであり、ソース側矩形の左上隅に対応するものです。ソースイメージとアルファイメージが交わらない部分のピクセルは、ターゲットイメージにコピーされません。
mergeAlpha
プロパティは、透明なイメージを別の透明なイメージにコピーするときにアルファチャンネルを使用するかどうかを制御します。アルファチャンネルを使用してピクセルをコピーするには、mergeAlpha
プロパティを true
に設定します。mergeAlpha
プロパティのデフォルト値は false
です。
パラメーター
sourceBitmapData:BitmapData — ピクセルのコピー元となる入力ビットマップイメージです。ソースイメージは、別の BitmapData インスタンスにすることも、現在の BitmapData インスタンスを参照することもできます。
| |
sourceRect:Rectangle — 入力として使用するソースイメージの領域を定義する矩形です。
| |
destPoint:Point — ターゲットポイントです。新しいピクセルが配置される矩形領域の左上隅を表します。
| |
alphaBitmapData:BitmapData (default = null ) — 第 2 のアルファ BitmapData オブジェクトソースです。
| |
alphaPoint:Point (default = null ) — アルファ BitmapData オブジェクトソース内のポイントです。sourceRect パラメーターの左上隅に対応します。
| |
mergeAlpha:Boolean (default = false ) — アルファチャンネルを使用するには、値を true に設定します。アルファチャンネルを使用せずにピクセルをコピーするには、値を false に設定します。
|
例外
TypeError — sourceBitmapData、sourceRect または destPoint が null です。
|
例 ( この例の使用方法 )
import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Rectangle; import flash.geom.Point; var bmd1:BitmapData = new BitmapData(40, 40, false, 0x000000FF); var bmd2:BitmapData = new BitmapData(80, 40, false, 0x0000CC44); var rect:Rectangle = new Rectangle(0, 0, 20, 20); var pt:Point = new Point(10, 10); bmd2.copyPixels(bmd1, rect, pt); var bm1:Bitmap = new Bitmap(bmd1); this.addChild(bm1); var bm2:Bitmap = new Bitmap(bmd2); this.addChild(bm2); bm2.x = 50;
copyPixelsToByteArray | () | メソッド |
public function copyPixelsToByteArray(rect:Rectangle, data:ByteArray):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 11.4, AIR 3.4 |
ピクセルデータの矩形領域からバイト配列を入力します。このメソッドは、ByteArray の position
インテックスから開始して、各ピクセルごとに、符号なし整数(32 ビットの乗算されないピクセル値)をバイト配列に書き込みます。必要に応じて、バイト配列のサイズは、すべてのピクセルデータを保持するのに必要なバイト数まで増加されます。
パラメーター
rect:Rectangle — 現在の BitmapData オブジェクト内の矩形領域です。
| |
data:ByteArray — ターゲット ByteArray オブジェクト。
|
例外
TypeError — rect 引数が null の場合または data 引数が null の場合
|
関連する API エレメント
dispose | () | メソッド |
public function dispose():void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0, Flash Lite 4 |
BitmapData オブジェクトの格納に使用されるメモリを解放します。
dispose()
メソッドをイメージに対して呼び出すと、イメージの高さと幅が 0 に設定されます。それ以降、この BitmapData インスタンスのメソッドまたはプロパティを呼び出すと失敗し、例外がスローされます。
BitmapData.dispose()
は、実際のビットマップデータが占めていたメモリ領域を即時に解放します(ビットマップは最大で 64MB のメモリ領域を使用します)。BitmapData.dispose()
を使用した後は BitmapData オブジェクトを使用できなくなり、BitmapData オブジェクトに対して関数を呼び出すと、Flash ランタイムから例外が返されます。ただし、BitmapData.dispose()
では BitmapData オブジェクト(約 128 バイト)のガベージコレクションは行われません。実際の BitmapData オブジェクトが占めていたメモリ領域は、ガベージコレクターによって BitmapData オブジェクトが回収された時点で解放されます。
関連する API エレメント
例 ( この例の使用方法 )
dispose()
メソッドに対する呼び出し(例外がスロー)の後、BitmapData オブジェクトを呼び出したときの効果を示しています。
import flash.display.BitmapData; var myBitmapData:BitmapData = new BitmapData(100, 80, false, 0x000000FF); trace(myBitmapData.getPixel(1, 1)); // 255 == 0xFF myBitmapData.dispose(); try { trace(myBitmapData.getPixel(1, 1)); } catch (error:Error) { trace(error); // ArgumentError }
draw | () | メソッド |
public function draw(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:flash.geom:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Flash ランタイムのベクターレンダラーを使用して、source
表示オブジェクトをビットマップイメージ上に描画します。matrix
、colorTransform
、blendMode
、およびターゲット clipRect
パラメーターを指定することにより、レンダリングの実行方法を制御できます。さらに、必要に応じて、拡大 / 縮小時にビットマップのスムージングを行うかどうかを指定することもできます(これはソースオブジェクトが BitmapData オブジェクトの場合にのみ可能です)。
注意:drawWithQuality()
メソッドの動作は draw()
メソッドと同様ですが、ベクターレンダリングの品質の指定に Stage.quality
プロパティを使用する代わりに、drawWithQuality()
メソッドに対して quality
パラメーターを指定します。
このメソッドは、オーサリングツールインターフェイスにおいてオブジェクトに対して標準ベクターレンダラーを使ってオブジェクトを描画する方法に直接対応します。
ソース表示オブジェクトは、この呼び出しで適用される変換を使用しません。ライブラリやファイル内に存在するように処理され、マトリックス変換、カラー変換、ブレンドモードはありません。変換プロパティを使って(ムービークリップなどの)表示オブジェクトを描画するには、transform
プロパティオブジェクトを、BitmapData オブジェクトを使用する Bitmap オブジェクトの transform
プロパティにコピーすることができます。
このメソッドは、Flash Player 9.0.115.0 以降および Adobe AIR の RTMP でサポートされます。サーバーサイドスクリプトで、Flash Media Server 上のストリームへのアクセスを制御することができます。詳しくは、Client.audioSampleAccess
プロパティおよび Client.videoSampleAccess
プロパティのトピック(「Adobe Flash Media Server サーバーサイド ActionScript リファレンスガイド」)を参照してください。
ソースオブジェクトと(Sprite または MovieClip オブジェクトの場合)その子オブジェクトすべてが、呼び出し元の同一のドメインから来たのではない場合、または Security.allowDomain()
メソッドを呼び出したことによって呼び出し元にアクセス可能なコンテンツ内に存在しない場合、draw()
への呼び出しは SecurityError 例外をスローします。この制限事項はアプリケーションセキュリティサンドボックス内の AIR コンテンツには適用されません。
ロードされたビットマップイメージの source
としての使用にも制限があります。ロードされたイメージが呼び出し元と同じドメインに存在していた場合、draw()
メソッドの呼び出しは成功します。また、イメージのサーバー上のクロスドメインポリシーファイルで、draw()
メソッドを呼び出す SWF コンテンツのドメインに対して許可を与えることもできます。この場合、LoaderContext オブジェクトの checkPolicyFile
プロパティを設定し、このオブジェクトを context
パラメーターとして、イメージのロードに使用する Loader オブジェクトの load()
メソッドを呼び出すときに使用する必要があります。これらの制限は、アプリケーションセキュリティサンドボックス内の AIR コンテンツには適用されません。
Windows では、draw()
メソッドは Adobe AIR の HTMLLoader オブジェクトにある HTML ページに組み込まれた SWF コンテンツをキャプチャできません。
draw()
メソッドは Adobe AIR では PDF コンテンツをキャプチャできません。また、wmode
属性が "window"
に設定されている HTML に埋め込まれた SWF コンテンツをキャプチャできません(Adobe AIR の場合)。
パラメーター
source:IBitmapDrawable — BitmapData オブジェクトに描画される表示オブジェクトまたは BitmapData オブジェクトです (DisplayObject および BitmapData クラスは IBitmapDrawable インターフェイスを実装しています)。
| |
matrix:Matrix (default = null ) — ビットマップの座標を拡大 / 縮小、回転、または平行移動するために使われる Matrix オブジェクトです。マトリックス変換をイメージに適用したくない場合は、(デフォルト new Matrix() コンストラクターを使って作成される)単位マトリックスにこのパラメーターを設定するか、null 値を渡してください。
| |
colorTransform:flash.geom:ColorTransform (default = null ) — ビットマップのカラー値を調整するために使用する ColorTransform オブジェクトです。オブジェクトが提供されない場合、ビットマップイメージのカラーは変換されません。このパラメーターを渡す必要があるが、イメージを変換したくない場合、このパラメーターを、デフォルトの new ColorTransform() コンストラクターを使って作成される ColorTransform オブジェクトに設定します。
| |
blendMode:String (default = null ) — 結果として生成されるビットマップに適用されるブレンドモードを指定する、flash.display.BlendMode クラスのストリング値です。
| |
clipRect:Rectangle (default = null ) — 描画するソースオブジェクトの領域を定義する矩形オブジェクトです。この値を指定しない場合、クリッピングは発生せず、ソースオブジェクト全体が描画されます。
| |
smoothing:Boolean (default = false ) — matrix パラメーターでの拡大 / 縮小または回転により、拡大 / 縮小時または回転時に BitmapData オブジェクトがスムージングされるかどうかを決定するブール値です。smoothing パラメーターが適用されるのは、source パラメーターが BitmapData オブジェクトである場合のみです。smoothing を false に設定すると、回転または拡大 / 縮小した BitmapData イメージはピクセル化されたように、またはぎざぎざに表示されます。例えば、次の 2 つのイメージは、source パラメーターの同じ BitmapData オブジェクトを使用していますが、smoothing パラメーターは左の true と右の false に設定されています。
|
例外
ArgumentError — source パラメーターが、BitmapData または DisplayObject オブジェクトではありません。
| |
SecurityError — source オブジェクト、および(Sprite または MovieClip オブジェクトの)すべての子オブジェクトが呼び出し元と同じドメインに属していないか、Security.allowDomain() メソッド呼び出し後に呼び出し元からアクセスできるコンテンツに含まれていません。この制限事項はアプリケーションセキュリティサンドボックス内の AIR コンテンツには適用されません。
| |
ArgumentError — source が null であるか、有効な IBitmapDrawable オブジェクトではありません。
|
関連する API エレメント
flash.display.Stage.quality
flash.display.StageQuality
flash.display.BlendMode
flash.geom.ColorTransform
flash.geom.Matrix
flash.system.JPEGLoaderContext
例 ( この例の使用方法 )
import flash.display.Bitmap; import flash.display.BitmapData; import flash.text.TextField; var tf:TextField = new TextField(); tf.text = "bitmap text"; var myBitmapData:BitmapData = new BitmapData(80, 20); myBitmapData.draw(tf); var bmp:Bitmap = new Bitmap(myBitmapData); this.addChild(bmp);
drawWithQuality | () | メソッド |
public function drawWithQuality(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:flash.geom:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false, quality:String = null):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 11.3, AIR 3.3 |
Flash ランタイムのベクターレンダラーを使用して、source
表示オブジェクトをビットマップイメージ上に描画します。matrix
、colorTransform
、blendMode
、およびターゲット clipRect
パラメーターを指定することにより、レンダリングの実行方法を制御できます。さらに、必要に応じて、拡大 / 縮小時にビットマップのスムージングを行うかどうかを指定することもできます(これはソースオブジェクトが BitmapData オブジェクトの場合にのみ可能です)。
注意:drawWithQuality()
メソッドの動作は draw()
メソッドと同様ですが、ベクターレンダリングの品質の指定に Stage.quality
プロパティを使用する代わりに、drawWithQuality()
メソッドに対して quality
パラメーターを指定します。
このメソッドは、オーサリングツールインターフェイスにおいてオブジェクトに対して標準ベクターレンダラーを使ってオブジェクトを描画する方法に直接対応します。
ソース表示オブジェクトは、この呼び出しで適用される変換を使用しません。ライブラリやファイル内に存在するように処理され、マトリックス変換、カラー変換、ブレンドモードはありません。変換プロパティを使って(ムービークリップなどの)表示オブジェクトを描画するには、transform
プロパティオブジェクトを、BitmapData オブジェクトを使用する Bitmap オブジェクトの transform
プロパティにコピーすることができます。
このメソッドは、Flash Player 9.0.115.0 以降および Adobe AIR の RTMP でサポートされます。サーバーサイドスクリプトで、Flash Media Server 上のストリームへのアクセスを制御することができます。詳細については、Client.audioSampleAccess
プロパティおよび Client.videoSampleAccess
プロパティのトピック(『Server-Side ActionScript Language Reference for Adobe Flash Media Server』)を参照してください。
ソースオブジェクトと(Sprite または MovieClip オブジェクトの場合)その子オブジェクトすべてが、呼び出し元の同一のドメインから来たのではない場合、または Security.allowDomain()
メソッドを呼び出して呼び出し元がアクセス可能になるコンテンツ内にそれらが存在しない場合、drawWithQuality()
への呼び出しは SecurityError 例外をスローします。この制限事項はアプリケーションセキュリティサンドボックス内の AIR コンテンツには適用されません。
ロードされたビットマップイメージの source
としての使用にも制限があります。ロードされたイメージが呼び出し元と同じドメインに存在していた場合、drawWithQuality()
メソッドの呼び出しは成功します。また、イメージのサーバー上のクロスドメインポリシーファイルで、drawWithQuality()
メソッドを呼び出す SWF コンテンツのドメインに対して許可することもできます。この場合、LoaderContext オブジェクトの checkPolicyFile
プロパティを設定し、このオブジェクトを context
パラメーターとして、イメージのロードに使用する Loader オブジェクトの load()
メソッドを呼び出すときに使用する必要があります。これらの制限は、アプリケーションセキュリティサンドボックス内の AIR コンテンツには適用されません。
Windows では、drawWithQuality()
メソッドは Adobe AIR の HTMLLoader オブジェクトにある HTML ページに組み込まれた SWF コンテンツをキャプチャできません。
drawWithQuality()
メソッドは Adobe AIR では PDF コンテンツをキャプチャできません。また、wmode
属性が "window"
に設定されている HTML に埋め込まれた SWF コンテンツをキャプチャできません(Adobe AIR の場合)。
パラメーター
source:IBitmapDrawable — BitmapData オブジェクトに描画される表示オブジェクトまたは BitmapData オブジェクトです (DisplayObject および BitmapData クラスは IBitmapDrawable インターフェイスを実装しています)。
| |
matrix:Matrix (default = null ) — ビットマップの座標を拡大 / 縮小、回転、または平行移動するために使われる Matrix オブジェクトです。マトリックス変換をイメージに適用したくない場合は、(デフォルト new Matrix() コンストラクターを使って作成される)単位マトリックスにこのパラメーターを設定するか、null 値を渡してください。
| |
colorTransform:flash.geom:ColorTransform (default = null ) — ビットマップのカラー値を調整するために使用する ColorTransform オブジェクトです。オブジェクトが提供されない場合、ビットマップイメージのカラーは変換されません。このパラメーターを渡す必要があるが、イメージを変換したくない場合、このパラメーターを、デフォルトの new ColorTransform() コンストラクターを使って作成される ColorTransform オブジェクトに設定します。
| |
blendMode:String (default = null ) — 結果として生成されるビットマップに適用されるブレンドモードを指定する、flash.display.BlendMode クラスのストリング値です。
| |
clipRect:Rectangle (default = null ) — 描画するソースオブジェクトの領域を定義する矩形オブジェクトです。この値を指定しない場合、クリッピングは発生せず、ソースオブジェクト全体が描画されます。
| |
smoothing:Boolean (default = false ) — matrix パラメーターでの拡大 / 縮小または回転により、拡大 / 縮小時または回転時に BitmapData オブジェクトがスムージングされるかどうかを決定するブール値です。smoothing パラメーターが適用されるのは、source パラメーターが BitmapData オブジェクトである場合のみです。smoothing を false に設定すると、回転または拡大 / 縮小した BitmapData イメージはピクセル化されたように、またはぎざぎざに表示されます。例えば、次の 2 つのイメージは、source パラメーターの同じ BitmapData オブジェクトを使用していますが、smoothing パラメーターは左の true と右の false に設定されています。
| |
quality:String (default = null ) — StageQuality のいずれかの値です。ベクターグラフィックを描画する際に使用するアンチエイリアスの品質を選択します。
|
例外
ArgumentError — source パラメーターが、BitmapData または DisplayObject オブジェクトではありません。
| |
SecurityError — source オブジェクト、および(Sprite または MovieClip オブジェクトの)すべての子オブジェクトが呼び出し元と同じドメインに属していないか、Security.allowDomain() メソッド呼び出し後に呼び出し元からアクセスできるコンテンツに含まれていません。この制限事項はアプリケーションセキュリティサンドボックス内の AIR コンテンツには適用されません。
| |
ArgumentError — source が null であるか、有効な IBitmapDrawable オブジェクトではありません。
|
関連する API エレメント
flash.display.StageQuality
flash.display.BlendMode
flash.geom.ColorTransform
flash.geom.Matrix
flash.system.JPEGLoaderContext
例 ( この例の使用方法 )
import flash.display.Bitmap; import flash.display.BitmapData; import flash.text.TextField; var tf:TextField = new TextField(); tf.text = "bitmap text"; var myBitmapData:BitmapData = new BitmapData(80, 20); myBitmapData.drawWithQuality(tf, , , , , , StageQuality.LOW); var bmp:Bitmap = new Bitmap(myBitmapData); this.addChild(bmp);
encode | () | メソッド |
public function encode(rect:Rectangle, compressor:Object, byteArray:ByteArray = null):ByteArray
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 11.3, AIR 3.3 |
選択したコンプレッサアルゴリズムを使用してこの BitmapData オブジェクトを圧縮し、新しい ByteArray オブジェクトを返します。オプションで、圧縮後のデータを指定した ByteArray に書き込みます。compressor
引数ではエンコーディングアルゴリズムを指定します。有効な値は、PNGEncoderOptions、JPEGEncoderOptions および JPEGXREncoderOptions です。
次の例では、JPEGEncoderOptions を使用して BitmapData オブジェクトを圧縮します。
// Compress a BitmapData object as a JPEG file. var bitmapData:BitmapData = new BitmapData(640,480,false,0x00FF00); var byteArray:ByteArray = new ByteArray(); bitmapData.encode(new Rectangle(0,0,640,480), new flash.display.JPEGEncoderOptions(), byteArray);
パラメーター
rect:Rectangle — BitmapData オブジェクトの圧縮領域です。
| |
compressor:Object — 使用するコンプレッサのタイプです。有効な値は、flash.display.PNGEncoderOptions 、flash.display.JPEGEncoderOptions および flash.display.JPEGXREncoderOptions です。
| |
byteArray:ByteArray (default = null ) — エンコードされた画像を格納する出力用の ByteArray です。
|
ByteArray — エンコードされた画像を含む ByteArray です。
|
関連する API エレメント
fillRect | () | メソッド |
public function fillRect(rect:Rectangle, color:uint):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0, Flash Lite 4 |
指定された ARGB カラーで矩形領域のピクセルを塗りつぶします。
パラメーター
rect:Rectangle — 塗りつぶす矩形領域です。
| |
color:uint — 領域を塗りつぶすため使用される ARGB カラー値です。ARGB カラー値は通常、16 進数形式(例えば、0xFF336699)で指定します。
|
例外
TypeError — rect が null です。
|
関連する API エレメント
例 ( この例の使用方法 )
import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Rectangle; var myBitmapData:BitmapData = new BitmapData(40, 40, false, 0x0000FF00); var rect:Rectangle = new Rectangle(0, 0, 20, 20); myBitmapData.fillRect(rect, 0x0000FF); var bm:Bitmap = new Bitmap(myBitmapData); addChild(bm);
floodFill | () | メソッド |
public function floodFill(x:int, y:int, color:uint):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0, Flash Lite 4 |
(x , y) 座標を始点として所定の色で塗りつぶすことにより、イメージに対する塗りつぶし処理を実行します。floodFill()
メソッドは、各種のペイントプログラムのバケツツールのようなものです。color は、アルファ情報とカラー情報を含む ARGB カラーです。
パラメーター
x:int — イメージの x 座標です。
| |
y:int — イメージの y 座標です。
| |
color:uint — 塗りとして使用する ARGB カラーです。
|
例 ( この例の使用方法 )
(10, 10)
で定義されたピクセルを囲んでいる領域。カラーはすべてこのポイントと同じ色)を赤で塗りつぶす方法を示しています。
import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Rectangle; var myBitmapData:BitmapData = new BitmapData(40, 40, false, 0x0000FF00); var rect:Rectangle = new Rectangle(0, 0, 20, 20); myBitmapData.fillRect(rect, 0x000000FF); rect = new Rectangle(15, 15, 25, 25); myBitmapData.fillRect(rect, 0x000000FF); myBitmapData.floodFill(10, 10, 0x00FF0000); var bm:Bitmap = new Bitmap(myBitmapData); addChild(bm);
generateFilterRect | () | メソッド |
public function generateFilterRect(sourceRect:Rectangle, filter:BitmapFilter):Rectangle
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0 |
BitmapData オブジェクト、ソース矩形、フィルターオブジェクトを指定して、applyFilter()
メソッド呼び出しによって影響を受けるターゲット矩形を決定します。
例えば、ぼかしフィルターは通常、元のイメージのサイズよりも大きい領域に影響します。デフォルトの BlurFilter インスタンスによってフィルターが適用される 100 x 200 ピクセルのイメージでは、blurX = blurY = 4
が (-2,-2,104,204)
というターゲット矩形を生成します。generateFilterRect()
メソッドを使用すると、このターゲット矩形のサイズを前もって知ることができるので、フィルター処理の前にターゲットイメージを適切なサイズにすることができます。
一部のフィルターでは、ソースイメージのサイズに基づいてターゲット矩形がクリッピングされる場合があります。例えば、内側の DropShadow
は、ソースイメージよりも大きい結果を生成しません。この API では、ソース rect
パラメーターではなく、BitmapData オブジェクトをソースの境界として使用します。
パラメーター
sourceRect:Rectangle — 入力として使用するソースイメージの領域を定義する矩形です。
| |
filter:BitmapFilter — ターゲット矩形を算出するために使用するフィルターオブジェクトです。
|
Rectangle — イメージ、sourceRect パラメーター、およびフィルターを使って算出されるターゲット矩形です。
|
例外
TypeError — sourceRect または filter が null です。
|
例 ( この例の使用方法 )
generateFilterRect()
メソッドを使用して、ぼかしフィルターの結果が占める矩形領域を決定する方法を示しています。generateFilterRect()
メソッドの結果は、trace()
関数により出力されます。
import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Point; import flash.geom.Rectangle; import flash.filters.BlurFilter; var bmd:BitmapData = new BitmapData(80, 30, false, 0xFFCC00); var rect:Rectangle = new Rectangle(10, 10, 40, 10); bmd.fillRect(rect, 0xFF0000); var pt:Point = new Point(10, 10); var filter:BlurFilter = new BlurFilter(); trace(bmd.generateFilterRect(rect, filter)); // (x=8, y=8, w=44, h=14) bmd.applyFilter(bmd, rect, pt, filter); var bm:Bitmap = new Bitmap(bmd); addChild(bm);
generateFilterRect()
メソッドはフィルターを適用しない点に注意してください。applyFilter()
メソッドを呼び出してフィルターを適用します。
getColorBoundsRect | () | メソッド |
public function getColorBoundsRect(mask:uint, color:uint, findColor:Boolean = true):Rectangle
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0, Flash Lite 4 |
(findColor
パラメーターが true
に設定されている場合)ビットマップイメージ内の指定された色のすべてのピクセルを完全に囲む矩形領域を判別します。または、(findColor
パラメーターが false
に設定されている場合)指定された色ではないすべてのピクセルを完全に囲む矩形領域を判別します。
例えば、あるソースイメージで、0 以外のアルファチャンネルを含むイメージの矩形を判別するには、パラメーターとして {mask: 0xFF000000, color: 0x00000000}
を渡します。findColor
パラメーターが true
に設定されている場合、(value & mask) == color
であるピクセルの境界を見つけるためにイメージ全体が検索されます(value
はピクセルのカラー値)。findColor
パラメーターが false
に設定されている場合、(value & mask) !== color
であるピクセルの境界を見つけるためにイメージ全体が検索されます(value
はピクセルのカラー値)。 イメージの周囲の空白を判別するには、空白以外のピクセルの境界を見つけるために、{mask: 0xFFFFFFFF, color: 0xFFFFFFFF}
を渡してください。
パラメーター
mask:uint — 対象となる ARGB カラーのビットを指定する 16 進数値です。カラー値は、& (ビット単位の論理積(AND))演算子を使用して、この 16 進数値と組み合わせられます。
| |
color:uint — 16 進数値です。(findColor が true に設定されている場合は)一致すべき ARGB カラー、一致すべきでない ARGB カラー(findColor が false に設定されている場合)をそれぞれ指定します。
| |
findColor:Boolean (default = true ) — 値が true に設定された場合、イメージ内のカラー値の境界を返します。値が false に設定された場合、イメージ内の指定されたカラーが存在しない領域の境界を返します。
|
Rectangle — 指定された色であるイメージの領域です。
|
例 ( この例の使用方法 )
getColorBoundsRect()
メソッドを呼び出して、赤(0xFF0000)のピクセルからなる矩形を判別します。さらに、(findColor
パラメーターを false
に設定して)同じメソッドを呼び出し、中のピクセルが赤でない矩形を判別します。
import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Rectangle; var bmd:BitmapData = new BitmapData(80, 40, false, 0xFFFFFF); var rect:Rectangle = new Rectangle(0, 0, 80, 20); bmd.fillRect(rect, 0xFF0000); var maskColor:uint = 0xFFFFFF; var color:uint = 0xFF0000; var redBounds:Rectangle = bmd.getColorBoundsRect(maskColor, color, true); trace(redBounds); // (x=0, y=0, w=80, h=20) var notRedBounds:Rectangle = bmd.getColorBoundsRect(maskColor, color, false); trace(notRedBounds); // (x=0, y=20, w=80, h=20) var bm:Bitmap = new Bitmap(bmd); addChild(bm);
getPixel | () | メソッド |
public function getPixel(x:int, y:int):uint
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0, Flash Lite 4 |
BitmapData オブジェクトの特定ポイント (x, y) の RGB ピクセル値を表す整数を返します。getPixel()
メソッドは、乗算されていないピクセル値を返します。アルファ情報は返しません。
BitmapData オブジェクト内のピクセルはすべて、乗算済みカラー値として保存されます。乗算済みイメージピクセルは、アルファデータが既に乗算された赤、緑、青の各カラーチャンネル値を保持します。例えば、アルファ値が 0 の場合、乗算されていない値に関わらず、RGB チャンネルの値も 0 になります。このようにデータが失われると、処理の実行時に問題が生じることがあります。BitmapData のすべてのメソッドは、乗算されていない値を受け取ったり返したりします。ピクセルの内部表現は、値として返される前に、乗算済みから非乗算に変換されます。設定処理の際は、ピクセル値が事前に乗算されてから、生のイメージピクセルが設定されます。
パラメーター
x:int — ピクセルの x 座標です。
| |
y:int — ピクセルの y 座標です。
|
uint — RGB ピクセル値を表す数値。(x , y) 座標がイメージの境界外である場合は、0 を返します。
|
関連する API エレメント
例 ( この例の使用方法 )
getPixel()
メソッドを使用して、左上隅のピクセルの色の値を決定しています。
import flash.display.BitmapData; var bmd:BitmapData = new BitmapData(80, 40, false, 0xFF0000); var pixelValue:uint = bmd.getPixel(0, 0); trace(pixelValue.toString(16)); // ff0000;
getPixel32 | () | メソッド |
public function getPixel32(x:int, y:int):uint
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0, Flash Lite 4 |
アルファチャンネルデータと RGB データを含む ARGB カラー値を返します。このメソッドは getPixel()
メソッドと似ていますが、getPixel() メソッドはアルファチャンネルデータがない RGB カラーを返します。
BitmapData オブジェクト内のピクセルはすべて、乗算済みカラー値として保存されます。乗算済みイメージピクセルは、アルファデータが既に乗算された赤、緑、青の各カラーチャンネル値を保持します。例えば、アルファ値が 0 の場合、乗算されていない値に関わらず、RGB チャンネルの値も 0 になります。このようにデータが失われると、処理の実行時に問題が生じることがあります。BitmapData のすべてのメソッドは、乗算されていない値を受け取ったり返したりします。ピクセルの内部表現は、値として返される前に、乗算済みから非乗算に変換されます。設定処理の際は、ピクセル値が事前に乗算されてから、生のイメージピクセルが設定されます。
パラメーター
x:int — ピクセルの x 座標です。
| |
y:int — ピクセルの y 座標です。
|
uint — ARGB ピクセル値を表す数値です。(x, y) 座標がイメージの境界外である場合は、0 を返します。
|
関連する API エレメント
例 ( この例の使用方法 )
getPixel32()
メソッドを使用して左上隅のピクセルの色の値を決定し、さらに各カラー成分(アルファ、赤、緑、青)の 16 進数値を決定します。
import flash.display.BitmapData; var bmd:BitmapData = new BitmapData(80, 40, true, 0xFF44AACC); var pixelValue:uint = bmd.getPixel32(0, 0); var alphaValue:uint = pixelValue >> 24 & 0xFF; var red:uint = pixelValue >> 16 & 0xFF; var green:uint = pixelValue >> 8 & 0xFF; var blue:uint = pixelValue & 0xFF; trace(alphaValue.toString(16)); // ff trace(red.toString(16)); // 44 trace(green.toString(16)); // aa trace(blue.toString(16)); // cc
getPixels | () | メソッド |
public function getPixels(rect:Rectangle):ByteArray
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0, Flash Lite 4 |
ピクセルデータの矩形領域からバイト配列を生成します。各ピクセルごとに、符号なし整数(32 bit の乗算されないピクセル値)をバイト配列に書き込みます。
パラメーター
rect:Rectangle — 現在の BitmapData オブジェクト内の矩形領域です。
|
ByteArray — 特定の矩形内のピクセルを表す ByteArray です。
|
例外
TypeError — rect が null です。
|
関連する API エレメント
例 ( この例の使用方法 )
getPixels()
メソッドを使用して、ByteArray オブジェクトを BitmapData オブジェクトのピクセル値で塗りつぶします。
import flash.display.BitmapData; import flash.geom.Rectangle; import flash.utils.ByteArray; var bmd:BitmapData = new BitmapData(80, 40, true); var seed:int = int(Math.random() * int.MAX_VALUE); bmd.noise(seed); var bounds:Rectangle = new Rectangle(0, 0, bmd.width, bmd.height); var pixels:ByteArray = bmd.getPixels(bounds);
getVector | () | メソッド |
public function getVector(rect:Rectangle):Vector.<uint>
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5, Flash Lite 4 |
ピクセルデータの矩形領域からベクター配列を生成します。指定された矩形を表す、符号なし整数(32 bit の乗算されないピクセル値)の Vector オブジェクトを返します。
パラメーター
rect:Rectangle — 現在の BitmapData オブジェクト内の矩形領域です。
|
Vector.<uint> — 指定された Rectangle を表す Vector です。
|
例外
TypeError — rect が null です。
|
histogram | () | メソッド |
public function histogram(hRect:Rectangle = null):Vector.<Vector.<Number>>
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5, Flash Lite 4 |
BitmapData オブジェクトの 256 値のバイナリ数のヒストグラムを計算します。このメソッドは 4 つの Vector を含む Vector オブジェクトを返します。<Number> インスタンス(Number オブジェクトを含む 4 つの Vector オブジェクト)です。4 つの Vector インスタンスは、赤、緑、青およびアルファの順の各コンポーネントを表します。各 Vector インスタンスには、各コンポーネントの値のポピュレーションカウント(0 ~ 255)を表す 256 値が含まれています。
パラメーター
hRect:Rectangle (default = null ) — BitmapData オブジェクトの使用領域です。
|
Vector.<Vector.<Number>> |
hitTest | () | メソッド |
public function hitTest(firstPoint:Point, firstAlphaThreshold:uint, secondObject:Object, secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1):Boolean
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0, Flash Lite 4 |
1 つのビットマップイメージと、ポイント、矩形、または他のビットマップイメージとの間でピクセルレベルのヒットを検出します。ヒットは、1 つの不透明なピクセルまたは 2 つの重なり合う不透明なピクセル上のポイントまたは矩形の重なりです。ヒットテストの際、どちらのオブジェクトの変形(伸縮、回転など)も考慮されません。
イメージが不透明である場合、このメソッドでは完全に不透明な矩形と見なされます。透過性を考慮するピクセルレベルのヒットテストを実施する場合は、両方のイメージとも透明である必要があります。2 つの透明なイメージをテストするとき、アルファしきい値パラメーターは、アルファチャンネル値(0 ~ 255)がいくつであれば不透明とみなすかを制御します。
パラメーター
firstPoint:Point — 任意の座標空間における BitmapData イメージの左上隅の位置です。同じ座標空間を使って secondBitmapPoint パラメーターが定義されます。
| |
firstAlphaThreshold:uint — このヒットテストで不透明とみなされるアルファチャンネルの最小値です。
| |
secondObject:Object — Rectangle、Point、Bitmap、または BitmapData オブジェクトです。
| |
secondBitmapDataPoint:Point (default = null ) — 2 番目の BitmapData オブジェクト内のピクセル位置を定義するポイントです。このパラメーターは、secondObject の値が BitmapData オブジェクトである場合にのみ使用します。
| |
secondAlphaThreshold:uint (default = 1 ) — 2 番目の BitmapData オブジェクト内で不透明であるとみなされるアルファチャンネルの最小値です。このパラメーターは、secondObject の値が BitmapData オブジェクトで、両方の BitmapData オブジェクトが透明である場合にのみ使用します。
|
Boolean — ヒットが発生する場合は true 、そうでない場合は false です。
|
例外
ArgumentError — secondObject パラメーターが、Point、Rectangle、Bitmap、または BitmapData オブジェクトではありません。
| |
TypeError — firstPoint が null です。
|
例 ( この例の使用方法 )
hitTest()
メソッドを呼び出します(secondObject
として Point オブジェクトを使用)。最初の呼び出しでは、Point オブジェクトが(不透明ではない)BitmapData オブジェクトの左上隅を定義し、2 番目の呼び出しでは、Point オブジェクトが(不透明な)BitmapData オブジェクトの中央を定義します。
import flash.display.BitmapData; import flash.geom.Rectangle; import flash.geom.Point; var bmd1:BitmapData = new BitmapData(80, 80, true, 0x00000000); var rect:Rectangle = new Rectangle(20, 20, 40, 40); bmd1.fillRect(rect, 0xFF0000FF); var pt1:Point = new Point(1, 1); trace(bmd1.hitTest(pt1, 0xFF, pt1)); // false var pt2:Point = new Point(40, 40); trace(bmd1.hitTest(pt1, 0xFF, pt2)); // true
lock | () | メソッド |
public function lock():void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0 |
この BitmapData オブジェクトが変更されたときに、BitmapData オブジェクトを参照するすべてのオブジェクト(例えば Bitmap オブジェクト)が更新されないように、イメージをロックします。パフォーマンスを向上させるには、このメソッドを unlock()
メソッドと共に、setPixel()
メソッドまたは setPixel32()
メソッドを何度も呼び出す前後に使用してください。
関連する API エレメント
例 ( この例の使用方法 )
bitmapData
プロパティ(Bitmap オブジェクトである picture
のプロパティ)に基づいて BitmapData オブジェクトを作成します。次に、lock()
メソッドを呼び出してから、BitmapData オブジェクトを変更する複雑なカスタム関数である complexTransformation()
を呼び出します (picture
オブジェクトおよび complexTransformation()
関数はこの例では定義されません)。complexTransformation()
関数が bitmapData
プロパティ(picture
オブジェクトのプロパティ)を更新する場合でも、コードが unlock()
メソッドを bitmapData
オブジェクトに対して呼び出すまで、変更は反映されません。
import flash.display.BitmapData; var bitmapData:BitmapData = picture.bitmapData; bitmapData.lock(); bitmapData = complexTransformation(bitmapData); bitmapData.unlock(); picture.bitmapData = bitmapData;
merge | () | メソッド |
public function merge(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redMultiplier:uint, greenMultiplier:uint, blueMultiplier:uint, alphaMultiplier:uint):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0, Flash Lite 4 |
ソースイメージとターゲットイメージをチャンネルごとにブレンドします。チャンネルおよびピクセルごとに、ソースピクセルおよびターゲットピクセルのチャンネル値に基づいて新しい値が計算されます。例えば、赤チャンネルでは、新しい値が次のように計算されます(ここで、redSrc
はソースイメージのピクセルでの赤チャンネル値、redDest
はターゲットイメージの対応するピクセルでの赤チャンネル値です)。
new redDest = [(redSrc * redMultiplier) + (redDest * (256 - redMultiplier))] / 256;
redMultiplier
、greenMultiplier
、blueMultiplier
、および alphaMultiplier
の各値は、それぞれのカラーチャンネルに対して使用する乗数です。0
から 0x100
(256)までの 16 進数値を使用します。0
を指定すると、ターゲットの値がそのまま結果で使用され、0x100
を指定すると、ソースの値がそのまま使用されます。その間の数値を指定すると、混ぜ合わされた色が使用されます(50% の場合、0x80
など)。
パラメーター
sourceBitmapData:BitmapData — 使用する入力ビットマップイメージです。ソースイメージは、別の BitmapData オブジェクトにすることも、現在の BitmapData オブジェクトを参照することもできます。
| |
sourceRect:Rectangle — 入力として使用するソースイメージの領域を定義する矩形です。
| |
destPoint:Point — ソース矩形の左上隅に対応する、ターゲットイメージ(現在の BitmapData インスタンス)内のポイントです。
| |
redMultiplier:uint — 赤チャンネル値に乗算する 16 進数の uint 値です。
| |
greenMultiplier:uint — 緑チャンネル値に乗算する 16 進数の uint 値です。
| |
blueMultiplier:uint — 青チャンネル値に乗算する 16 進数の uint 値です。
| |
alphaMultiplier:uint — アルファ透明度の値に乗算する 16 進数の uint 値です。
|
例外
TypeError — sourceBitmapData、sourceRect、または destPoint が null です。
|
例 ( この例の使用方法 )
merge()
メソッドを呼び出し、2 番目の BitmapData ピクセルを最初の BitmapData オブジェクトの指定された矩形領域にのみ結合します。
import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Rectangle; import flash.geom.Point; var bmd1:BitmapData = new BitmapData(100, 80, true, 0xFF00FF00); var bmd2:BitmapData = new BitmapData(100, 80, true, 0xFFFF0000); var rect:Rectangle = new Rectangle(0, 0, 20, 20); var pt:Point = new Point(20, 20); var mult:uint = 0x80; // 50% bmd1.merge(bmd2, rect, pt, mult, mult, mult, mult); var bm1:Bitmap = new Bitmap(bmd1); addChild(bm1); var bm2:Bitmap = new Bitmap(bmd2); addChild(bm2); bm2.x = 110;
noise | () | メソッド |
public function noise(randomSeed:int, low:uint = 0, high:uint = 255, channelOptions:uint = 7, grayScale:Boolean = false):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0 |
ランダムノイズを表すピクセルでイメージを塗りつぶします。
パラメーター
randomSeed:int — ランダムシード(乱数の種)として使用する数値です。他のすべてのパラメーターを同じままにした場合、ランダムシードの値を変更することでさまざまな疑似乱数を生成できます。ノイズ関数はマッピング関数であり、真の乱数生成関数ではありません。このため、同じランダムシードから毎回同じ結果が作成されます。
| |
low:uint (default = 0 ) — チャンネルごとに生成する最小値です(0 ~ 255)。
| |
high:uint (default = 255 ) — チャンネルごとに生成する最大値です(0 ~ 255)。
| |
channelOptions:uint (default = 7 ) — 任意の 4 つのカラーチャンネル値(BitmapDataChannel.RED 、BitmapDataChannel.BLUE 、BitmapDataChannel.GREEN 、および BitmapDataChannel.ALPHA )の組み合わせである数値。OR 論理演算子(| )を使用して、複数のチャンネル値を組み合わせることができます。
| |
grayScale:Boolean (default = false ) — ブール値です。値が true である場合、すべてのカラーチャンネルに同じ値を設定することでグレースケールのイメージが作成されます。このパラメーターを true に設定しても、アルファチャンネル選択には影響しません。
|
関連する API エレメント
flash.display.BitmapDataChannel.BLUE
flash.display.BitmapDataChannel.GREEN
flash.display.BitmapDataChannel.ALPHA
例 ( この例の使用方法 )
noise()
メソッドを呼び出します。ただし、grayscale
パラメーターは false
に設定されるか(1 番目のオブジェクトの noise()
メソッドへの呼び出しの場合)、true
に設定されます(2 番目のオブジェクトの noise()
メソッドへの呼び出しの場合)。
import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.BitmapDataChannel; var bmd1:BitmapData = new BitmapData(80, 80); var bmd2:BitmapData = new BitmapData(80, 80); var seed:int = int(Math.random() * int.MAX_VALUE); bmd1.noise(seed, 0, 0xFF, BitmapDataChannel.RED, false); bmd2.noise(seed, 0, 0xFF, BitmapDataChannel.RED, true); var bm1:Bitmap = new Bitmap(bmd1); this.addChild(bm1); var bm2:Bitmap = new Bitmap(bmd2); this.addChild(bm2); bm2.x = 90;
paletteMap | () | メソッド |
public function paletteMap(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redArray:Array = null, greenArray:Array = null, blueArray:Array = null, alphaArray:Array = null):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0, Flash Lite 4 |
最大で 4 つのカラーパレットデータ配列(各チャンネルごとに 1 つの配列)を使用して、イメージ内のカラーチャンネル値をマッピングし直します。
Flash ランタイムは以下の手順に従って、結果として得られるイメージを生成します。
- 赤、緑、青、アルファの各値を算出した後、標準の 32 bit 整数算術演算を使ってこれらの値を足し合わせます。
- 各ピクセルの赤、緑、青、アルファのチャンネル値を抽出して、別個の 0 ~ 255 の値にします。これらの値は、次の該当する配列で新しいカラー値を調べる場合に使用します。
redArray
、greenArray
、blueArray
、およびalphaArray
。これら 4 つの配列にはそれぞれ 256 個の値が含まれている必要があります。 - 新しいチャンネル値を 4 つともすべて取得した後、それらの値を組み合わせて、ピクセルに適用される標準の ARGB 値にします。
このメソッドではクロスチャンネル効果をサポートできます。それぞれの入力配列は完全な 32 bit 値を含むことができます。値を足し合わせるときに移動は発生しません。このルーチンは、チャンネル単位のクランピングに対応していません。
チャンネルに対して配列が指定されない場合は、ソースイメージからターゲットイメージにカラーチャンネルがコピーされます。
このメソッドは各種効果で使用できます。例えば、通常のパレットマッピング(1 つのチャンネルを選択して疑似色イメージに変換する)などです。さらに、ガンマ、曲線、平準化、量子化といったさまざまなカラー操作アルゴリズムにもこのメソッドを使用できます。
パラメーター
sourceBitmapData:BitmapData — 使用する入力ビットマップイメージです。ソースイメージは、別の BitmapData オブジェクトにすることも、現在の BitmapData インスタンスを参照することもできます。
| |
sourceRect:Rectangle — 入力として使用するソースイメージの領域を定義する矩形です。
| |
destPoint:Point — ソース矩形の左上隅に対応する、ターゲットイメージ(現在の BitmapData オブジェクト)内のポイントです。
| |
redArray:Array (default = null ) — redArray が null でない場合、red = redArray[source red value] else red = source rect value 。
| |
greenArray:Array (default = null ) — greenArray が null でない場合、green = greenArray[source green value] else green = source green value. 。
| |
blueArray:Array (default = null ) — blueArray が null でない場合、blue = blueArray[source blue value] else blue = source blue value 。
| |
alphaArray:Array (default = null ) — alphaArray が null でない場合、alpha = alphaArray[source alpha value] else alpha = source alpha value 。
|
例外
TypeError — sourceBitmapData、sourceRect、または destPoint が null です。
|
例 ( この例の使用方法 )
paletteMap()
メソッドを使用して、BitmapData オブジェクトの下半分の矩形内の赤と緑を入れ替えます。
import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Rectangle; import flash.geom.Point; var myBitmapData:BitmapData = new BitmapData(80, 80, false, 0x00FF0000); myBitmapData.fillRect(new Rectangle(20, 20, 40, 40), 0x0000FF00); var redArray:Array = new Array(256); var greenArray:Array = new Array(256); for(var i:uint = 0; i < 255; i++) { redArray[i] = 0x00000000; greenArray[i] = 0x00000000; } redArray[0xFF] = 0x0000FF00; greenArray[0xFF] = 0x00FF0000; var bottomHalf:Rectangle = new Rectangle(0, 0, 100, 40); var pt:Point = new Point(0, 0); myBitmapData.paletteMap(myBitmapData, bottomHalf, pt, redArray, greenArray); var bm1:Bitmap = new Bitmap(myBitmapData); addChild(bm1);
perlinNoise | () | メソッド |
public function perlinNoise(baseX:Number, baseY:Number, numOctaves:uint, randomSeed:int, stitch:Boolean, fractalNoise:Boolean, channelOptions:uint = 7, grayScale:Boolean = false, offsets:Array = null):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0 |
Perlin ノイズイメージを生成します。
Perlin ノイズ生成アルゴリズムでは、個々のランダムノイズ関数(オクターブといいます)を補間および組み合わせることで、より自然に見えるランダムノイズを生成する単一の関数にします。音楽のオクターブと同様、各オクターブ関数の周波数は、その前のオクターブ関数の周波数の 2 倍になります。Perlin ノイズは、複数のノイズデータセットをさまざまな詳細レベルで組み合わせるので、"フラクタルノイズの和" と呼ばれてきました。
Perlin ノイズ関数は、木目、雲、山脈など、自然現象や風景をシミュレートする場合に使用できます。ほとんどの場合、Perlin ノイズ関数の出力をそのまま表示するのではなく、他のイメージを強調したり、擬似ランダムバリエーションを与えるために使用します。
単純なデジタルランダムノイズ関数は、コントラストのきついポイントが含まれるイメージを生成する場合が多いです。このようにきついコントラストは自然界にはあまりありません。Perlin ノイズアルゴリズムは、さまざまな詳細レベルで実行する複数のノイズ関数を混ぜ合わせます。このアルゴリズムの結果、互いに隣接するピクセル値の差異はより小さくなります。
パラメーター
baseX:Number — x 方向で使用する周波数。例えば、64 x 128 のイメージに見合うサイズのノイズを生成するには、baseX 値として 64 を渡します。
| |
baseY:Number — y 方向で使用する周波数。例えば、64 x 128 のイメージに見合うサイズのノイズを生成するには、baseY 値として 128 を渡します。
| |
numOctaves:uint — このノイズを作成するために組み合わせるオクターブ(つまり個々のノイズ関数)の数です。オクターブ数を多くすると、よりきめ細かいイメージを作成できます。オクターブ数を増やすと、処理時間も長くなります。
| |
randomSeed:int — ランダムシード(乱数の種)として使用する数値です。他のすべてのパラメーターを同じままにした場合、ランダムシードの値を変更することでさまざまな疑似乱数を生成できます。Perlin ノイズ関数はマッピング関数であり、真の乱数生成関数ではありません。このため、同じランダムシードから毎回同じ結果が作成されます。
| |
stitch:Boolean — ブール値です。値が true の場合、ビットマップ塗りとしてシームレスなタイリング用テクスチャを作成するために、このメソッドはイメージのトランジションエッジをスムーズにすることを試みます。
| |
fractalNoise:Boolean — ブール値です。値が true の場合、このメソッドはフラクタルノイズを生成します。それ以外の場合は、乱流を生成します。乱流があるイメージにはグラデーションに視覚的な不連続性があるので、炎や海の波のようなシャープな視覚効果に適している場合があります。
| |
channelOptions:uint (default = 7 ) — 任意の 4 つのカラーチャンネル値(BitmapDataChannel.RED 、BitmapDataChannel.BLUE 、BitmapDataChannel.GREEN 、および BitmapDataChannel.ALPHA )の組み合わせである数値。OR 論理演算子(| )を使用して、複数のチャンネル値を組み合わせることができます。
| |
grayScale:Boolean (default = false ) — ブール値です。値が true の場合、赤、緑、および青の各カラーチャンネルに同じ値を設定して、グレースケールイメージが作成されます。この値が true に設定されても、アルファチャンネルの値に影響はありません。
| |
offsets:Array (default = null ) — 各オクターブの x オフセットと y オフセットに対応するポイントの配列です。オフセット値を操作することで、perlinNoise イメージのレイヤーをスムーズにスクロールできます。オフセット配列内の各ポイントは、特定のオクターブノイズ関数に影響を与えます。
|
例 ( この例の使用方法 )
perlinNoise()
メソッドを呼び出して赤および青の水彩画効果を生み出す 200 x 200 ピクセルの BitmapData オブジェクトを作成します。
import flash.display.Bitmap; import flash.display.BitmapData; var bmd:BitmapData = new BitmapData(200, 200, false, 0x00CCCCCC); var seed:Number = Math.floor(Math.random() * 10); var channels:uint = BitmapDataChannel.RED | BitmapDataChannel.BLUE; bmd.perlinNoise(100, 80, 6, seed, false, true, channels, false, null); var bm:Bitmap = new Bitmap(bmd); addChild(bm);
pixelDissolve | () | メソッド |
public function pixelDissolve(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, randomSeed:int = 0, numPixels:int = 0, fillColor:uint = 0):int
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0 |
ソースイメージからターゲットイメージへのピクセルディゾルブ、または同じイメージを使用したピクセルディゾルブを実行します。Flash ランタイムは randomSeed
値を使用して、ランダムなピクセルディゾルブを生成します。完了するまでピクセルディゾルブを続けるには、この関数の戻り値を後続の呼び出しに渡す必要があります。
ソースイメージとターゲットイメージが等しくない場合は、すべてのプロパティを使用して、ソースからターゲットにピクセルがコピーされます。この処理により、空白イメージから完全に設定されたイメージへのディゾルブが可能になります。
ソースイメージとターゲットイメージが等しい場合は、color
パラメーターを使ってピクセルが塗られます。この処理により、完全に設定されたイメージを消去するようにディゾルブできます。このモードでは、ターゲット point
パラメーターが無視されます。
パラメーター
sourceBitmapData:BitmapData — 使用する入力ビットマップイメージです。ソースイメージは、別の BitmapData オブジェクトにすることも、現在の BitmapData インスタンスを参照することもできます。
| |
sourceRect:Rectangle — 入力として使用するソースイメージの領域を定義する矩形です。
| |
destPoint:Point — ソース矩形の左上隅に対応する、ターゲットイメージ(現在の BitmapData インスタンス)内のポイントです。
| |
randomSeed:int (default = 0 ) — ピクセルディゾルブを開始するために使用するランダムシード(乱数の種)です。
| |
numPixels:int (default = 0 ) — デフォルトは、ソース領域(幅 x 高さ)の 1/30 です。
| |
fillColor:uint (default = 0 ) — ソース値とターゲット値が等しいピクセルの塗りつぶしに使用する ARGB カラー値です。
|
int — 後続の呼び出しで使用する新しいランダムシード(乱数の種)です。
|
例外
TypeError — sourceBitmapData、sourceRect、または destPoint が null です。
| |
TypeError — numPixels が負の値です。
|
例 ( この例の使用方法 )
pixelDissolve()
メソッドを使用して、すべてのピクセルのカラーが変更されるまで一度に 40 個のピクセルをディゾルブすることにより、グレーの BitmapData オブジェクトを赤に変換します。
import flash.display.BitmapData; import flash.display.Bitmap; import flash.geom.Point; import flash.geom.Rectangle; import flash.utils.Timer; import flash.events.TimerEvent; var bmd:BitmapData = new BitmapData(100, 80, false, 0x00CCCCCC); var bitmap:Bitmap = new Bitmap(bmd); addChild(bitmap); var tim:Timer = new Timer(20); tim.start(); tim.addEventListener(TimerEvent.TIMER, timerHandler); function timerHandler(event:TimerEvent):void { var randomNum:Number = Math.floor(Math.random() * int.MAX_VALUE); dissolve(randomNum); } function dissolve(randomNum:Number):void { var rect:Rectangle = bmd.rect; var pt:Point = new Point(0, 0); var numberOfPixels:uint = 100; var red:uint = 0x00FF0000; bmd.pixelDissolve(bmd, rect, pt, randomNum, numberOfPixels, red); var grayRegion:Rectangle = bmd.getColorBoundsRect(0xFFFFFFFF, 0x00CCCCCC, true); if(grayRegion.width == 0 && grayRegion.height == 0 ) { tim.stop(); } }
scroll | () | メソッド |
public function scroll(x:int, y:int):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0 |
所定の (x , y) ピクセル量だけイメージをスクロールします。スクロール領域外のエッジ領域は変わらずにそのままになります。
パラメーター
x:int — 水平方向のスクロール量です。
| |
y:int — 垂直方向のスクロール量です。
|
例 ( この例の使用方法 )
import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Rectangle; var bmd:BitmapData = new BitmapData(80, 80, true, 0xFFCCCCCC); var rect:Rectangle = new Rectangle(0, 0, 40, 40); bmd.fillRect(rect, 0xFFFF0000); var bm:Bitmap = new Bitmap(bmd); addChild(bm); trace (bmd.getPixel32(50, 20).toString(16)); // ffcccccccc bmd.scroll(30, 0); trace (bmd.getPixel32(50, 20).toString(16)); // ffff0000
setPixel | () | メソッド |
public function setPixel(x:int, y:int, color:uint):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0, Flash Lite 4 |
BitmapData オブジェクトの 1 つのピクセルを設定します。この処理中、イメージピクセルのアルファチャンネルは現在の値が保持されます。RGB カラーパラメーターの値は、乗算されていないカラー値として扱われます。
注意:setPixel()
または setPixel32()
メソッドを繰り返し使用する場合、パフォーマンスを向上させるには、lock()
メソッドを呼び出してから setPixel()
または setPixel32()
メソッドを呼び出します。その後、ピクセル変更がすべて完了したら、unlock()
メソッドを呼び出します。このように処理を行うと、ピクセル変更がすべて完了するまで、この BitmapData インスタンスを参照するオブジェクトは更新されません。
パラメーター
x:int — 値が変更されるピクセルの x 座標です。
| |
y:int — 値が変更されるピクセルの y 座標です。
| |
color:uint — 結果として生成される、ピクセルの RGB カラーです。
|
関連する API エレメント
例 ( この例の使用方法 )
setPixel()
メソッドを使用して、BitmapData オブジェクト内に赤い線を描画します。
import flash.display.Bitmap; import flash.display.BitmapData; var bmd:BitmapData = new BitmapData(80, 80, false, 0xCCCCCC); for (var i:uint = 0; i < 80; i++) { var red:uint = 0xFF0000; bmd.setPixel(i, 40, red); } var bm:Bitmap = new Bitmap(bmd); addChild(bm);
setPixel32 | () | メソッド |
public function setPixel32(x:int, y:int, color:uint):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0, Flash Lite 4 |
BitmapData オブジェクトの 1 つのピクセルにカラー値とアルファ透明度を設定します。このメソッドは setPixel()
メソッドと似ています。主な違いは、setPixel32()
メソッドではアルファチャンネル情報が含まれる ARGB カラー値を引数として取ることです。
BitmapData オブジェクト内のピクセルはすべて、乗算済みカラー値として保存されます。乗算済みイメージピクセルは、アルファデータが既に乗算された赤、緑、青の各カラーチャンネル値を保持します。例えば、アルファ値が 0 の場合、乗算されていない値に関わらず、RGB チャンネルの値も 0 になります。このようにデータが失われると、処理の実行時に問題が生じることがあります。BitmapData のすべてのメソッドは、乗算されていない値を受け取ったり返したりします。ピクセルの内部表現は、値として返される前に、乗算済みから非乗算に変換されます。設定処理の際は、ピクセル値が事前に乗算されてから、生のイメージピクセルが設定されます。
注意:setPixel()
または setPixel32()
メソッドを繰り返し使用する場合、パフォーマンスを向上させるには、lock()
メソッドを呼び出してから setPixel()
または setPixel32()
メソッドを呼び出します。その後、ピクセル変更がすべて完了したら、unlock()
メソッドを呼び出します。このように処理を行うと、ピクセル変更がすべて完了するまで、この BitmapData インスタンスを参照するオブジェクトは更新されません。
パラメーター
x:int — 値が変更されるピクセルの x 座標です。
| |
y:int — 値が変更されるピクセルの y 座標です。
| |
color:uint — 結果として生成される、ピクセルの ARGB カラーです。ビットマップが不透明な(透明でない)場合には、このカラー値のアルファ透明度部分は無視されます。
|
関連する API エレメント
例 ( この例の使用方法 )
setPixel32()
メソッドを使用して、透明な(alpha == 0x60)赤い線を BitmapData オブジェクト内に描画します。
import flash.display.Bitmap; import flash.display.BitmapData; var bmd:BitmapData = new BitmapData(80, 80, true, 0xFFCCCCCC); for (var i:uint = 0; i < 80; i++) { var red:uint = 0x60FF0000; bmd.setPixel32(i, 40, red); } var bm:Bitmap = new Bitmap(bmd); addChild(bm);
setPixels | () | メソッド |
public function setPixels(rect:Rectangle, inputByteArray:ByteArray):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0, Flash Lite 4 |
バイト配列をピクセルデータの矩形領域に変換します。各ピクセルごとに ByteArray.readUnsignedInt()
メソッドが呼び出され、戻り値がピクセルに書き込まれます。矩形全体が書き込まれる前にバイト配列が終了した場合、関数は終了します。バイト配列内のデータは 32 bit ARGB ピクセル値と想定されます。ピクセル読み取りの前後に、バイト配列に対するシークは実行されません。
パラメーター
rect:Rectangle — BitmapData オブジェクトの矩形領域を指定します。
| |
inputByteArray:ByteArray — 矩形領域で使用される 32 bit の乗算されないピクセル値からなる ByteArray オブジェクトです。
|
例外
EOFError — inputByteArray オブジェクトには、rect 矩形の領域を塗りつぶすための十分なデータが含まれていません。このメソッドは、可能な限り多くのピクセルを塗りつぶした後、例外をスローします。
| |
TypeError — rect または inputByteArray が null です。
|
関連する API エレメント
例 ( この例の使用方法 )
getPixels()
メソッドと setPixels()
メソッドを使用して、ある BitmapData オブジェクトから別の BitmapData オブジェクトにピクセルをコピーします。
import flash.display.Bitmap; import flash.display.BitmapData; import flash.utils.ByteArray; import flash.geom.Rectangle; var bmd1:BitmapData = new BitmapData(100, 100, true, 0xFFCCCCCC); var bmd2:BitmapData = new BitmapData(100, 100, true, 0xFFFF0000); var rect:Rectangle = new Rectangle(0, 0, 100, 100); var bytes:ByteArray = bmd1.getPixels(rect); bytes.position = 0; bmd2.setPixels(rect, bytes); var bm1:Bitmap = new Bitmap(bmd1); addChild(bm1); var bm2:Bitmap = new Bitmap(bmd2); addChild(bm2); bm2.x = 110;
setVector | () | メソッド |
public function setVector(rect:Rectangle, inputVector:Vector.<uint>):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Vector をピクセルデータの矩形領域に変換します。ピクセルごとに、ベクターエレメントが BitmapData ピクセルに読み込みおよび書き込みされます。Vector のデータは 32 bit ARGB ピクセル値と推定されます。
パラメーター
rect:Rectangle — BitmapData オブジェクトの矩形領域を指定します。
| |
inputVector:Vector.<uint> — 矩形領域で使用される 32 bit の乗算されないピクセル値からなる Vector オブジェクトです。
|
例外
RangeError — ベクター配列は、すべてのピクセルデータを読み込めるほど大きくありません。
|
threshold | () | メソッド |
public function threshold(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, operation:String, threshold:uint, color:uint = 0, mask:uint = 0xFFFFFFFF, copySource:Boolean = false):uint
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0 |
指定されたしきい値と比較してイメージ内のピクセル値をテストし、テストに適合したピクセルに新しいカラー値を設定します。threshold()
メソッドを使用すると、イメージ内のカラー範囲を分離して置換し、イメージピクセルに対しその他の論理演算を実行することができます。
threshold()
メソッドのテスト論理は次のとおりです。
((pixelValue & mask) operation (threshold & mask))
の場合、ピクセルをcolor
に設定します。- そうでない場合、
copySource == true
であれば、sourceBitmap
の対応するピクセル値にピクセルを設定します。
operation
パラメーターは、しきい値テストで使用する比較演算子を指定します。例えば、operation
パラメーターとして "==" を使用することにより、イメージ内の特定のカラー値を分離できます。または、{operation: "<", mask: 0xFF000000, threshold: 0x7F000000, color: 0x00000000}
を使用することにより、ソースイメージピクセルのアルファが 0x7F 未満の場合に、すべてのターゲットピクセルが完全に透明になるよう設定できます。アニメーション化されたトランジションやその他の効果に対して、この技法を使用できます。
パラメーター
sourceBitmapData:BitmapData — 使用する入力ビットマップイメージです。ソースイメージは、別の BitmapData オブジェクトにすることも、現在の BitmapData インスタンスを参照することもできます。
| |
sourceRect:Rectangle — 入力として使用するソースイメージの領域を定義する矩形です。
| |
destPoint:Point — ソース矩形の左上隅に対応する、ターゲットイメージ(現在の BitmapData インスタンス)内のポイントです。
| |
operation:String — 比較演算子("<"、"<="、">"、">="、"=="、"!=")の 1 つ。ストリングとして渡されます。="
| |
threshold:uint — 各ピクセルがしきい値に適合するか、それともしきい値を超えているかをテストするための基準となる値です。
| |
color:uint (default = 0 ) — しきい値テストに適合した場合にピクセルに設定されるカラー値です。デフォルト値は 0x00000000 です。
| |
mask:uint (default = 0xFFFFFFFF ) — カラーコンポーネントを分離するために使用するマスクです。
| |
copySource:Boolean (default = false ) — 値が true の場合、しきい値テストが失敗したときに、ソースイメージのピクセル値がターゲットイメージにコピーされます。値が false であれば、しきい値テストに適合しない場合にソースイメージはコピーされません。
|
uint — 変更されたピクセルの数です。
|
例外
TypeError — sourceBitmapData、sourceRect、destPoint、または operation が null です。
| |
ArgumentError — operation のストリングが有効な演算ではありません。
|
例 ( この例の使用方法 )
perlinNoise()
メソッドを使用して青および赤のパターンを 1 つの BitmapData オブジェクトに追加した後、threshold()
メソッドを使用して、これらのピクセルを最初の BitmapData オブジェクトから 2 番目のオブジェクトにコピーします。その際、赤の値が 0x80(50%)より大きいピクセルを、透明の赤(0x20FF0000)に設定されたピクセルに置換します。
import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.BitmapDataChannel; import flash.geom.Point; import flash.geom.Rectangle; var bmd1:BitmapData = new BitmapData(200, 200, true, 0xFFCCCCCC); var seed:int = int(Math.random() * int.MAX_VALUE); var channels:uint = BitmapDataChannel.RED | BitmapDataChannel.BLUE; bmd1.perlinNoise(100, 80, 12, seed, false, true, channels, false, null); var bitmap1:Bitmap = new Bitmap(bmd1); addChild(bitmap1); var bmd2:BitmapData = new BitmapData(200, 200, true, 0xFFCCCCCC); var pt:Point = new Point(0, 0); var rect:Rectangle = new Rectangle(0, 0, 200, 200); var threshold:uint = 0x00800000; var color:uint = 0x20FF0000; var maskColor:uint = 0x00FF0000; bmd2.threshold(bmd1, rect, pt, ">", threshold, color, maskColor, true); var bitmap2:Bitmap = new Bitmap(bmd2); bitmap2.x = bitmap1.x + bitmap1.width + 10; addChild(bitmap2);
unlock | () | メソッド |
public function unlock(changeRect:Rectangle = null):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 9, AIR 1.0 |
この BitmapData オブジェクトが変更されたときに、BitmapData オブジェクトを参照するすべてのオブジェクト(例えば Bitmap オブジェクト)が更新されるように、イメージをロック解除します。パフォーマンスを向上させるには、このメソッドを lock()
メソッドと共に、setPixel()
メソッドまたは setPixel32()
メソッドを何度も呼び出す前後に使用してください。
パラメーター
changeRect:Rectangle (default = null ) — 変更された BitmapData オブジェクトの領域です。このパラメーターに値を指定しない場合、BitmapData オブジェクトの全領域が変更されたと見なされます。このパラメーターは、Flash Player バージョン 9.0.115.0 以降を必要とします。
|
関連する API エレメント
例 ( この例の使用方法 )
bitmapData
プロパティ(Bitmap オブジェクトである picture
のプロパティ)に基づいて BitmapData オブジェクトを作成します。次に、lock()
メソッドを呼び出してから、BitmapData オブジェクトを変更する複雑なカスタム関数である complexTransformation()
を呼び出します (picture
オブジェクトおよび complexTransformation()
関数はこの例では定義されません)。complexTransformation()
関数が bitmapData
プロパティ(picture
オブジェクトのプロパティ)を更新する場合でも、コードが unlock()
メソッドを bitmapData
オブジェクトに対して呼び出すまで、変更は反映されません。
import flash.display.BitmapData; var bitmapData:BitmapData = picture.bitmapData; bitmapData.lock(); bitmapData = complexTransformation(bitmapData); bitmapData.unlock(); picture.bitmapData = bitmapData;
threshold()
メソッドを使用するテストに合格したピクセルに新しい色が適用されています。これを行うには、以下の手順を実行します。
url
プロパティを作成します。これはイメージファイルの場所と名前です。- クラスコンストラクターが Loader オブジェクトを作成します。これは、
completeHandler()
メソッドがイメージ操作を完了したときに送出される、イベントリスナーをインスタンス化します。 - 次に、
request
URLRequest オブジェクトが、loader.load()
に渡されます。これは、表示オブジェクトを使用してメモリにイメージをロードします。 - 次にイメージが表示リストに配置され、イメージは画面の座標 x = 0、y = 0 に表示されます。
- 続いて、
completeHandler()
メソッドで次の処理が実行されます。- 2 番目の Loader オブジェクトと Bitmap オブジェクトを作成します。Bitmap オブジェクトは、この Loader オブジェクトで初期化されます。
- 2 番目の Bitmap オブジェクトである
duplicate
を作成します。これは、duplicateImage()
メソッドを呼び出し、元のイメージを複製します。 - BitmapData オブジェクトを作成すると、これが
duplicate
オブジェクトの BitmapData オブジェクトに割り当てられます。 - 元のイメージと同じ座標、幅、高さで初期化された新しい Rectangle オブジェクトを作成します。
- 新しい Point オブジェクトを作成します。デフォルトでは x = 0、y = 0 に作成されます。
- 次に示す変数を作成します。
operation
— しきい値が元の値以上である場合に、新しい色を適用します。threshold
— 各ピクセルの比較対象の値。この例では、アルファ 0xCC の明るい灰色に設定されます。color
— しきい値のテストに合格したピクセルに設定する色。この例では黄色です。mask
— 正反対の色。この例では透明色の青色です。copySource
—false
に設定します。これは、しきい値を満たさなかった場合には、ピクセル値がコピーされないことを示します。しきい値のテストに合格したピクセルだけが変更されるため、この値に意味はありません。
- 上記の変数を使用して
threshold()
メソッドを呼び出します。結果のしきい値の等式は、if (current pixel Value & 0x000000FF) >= (0xCCCCCCCC & 0x000000FF) then set pixel to 0xFFFFFF00
のようになります。
注意:
- 「ローカルでの再生に関するセキュリティ」を「ローカルファイルにのみアクセスする」に設定して SWF ファイルをコンパイルする必要があります。
- この例では、"Image.gif" という名前のファイルが SWF ファイルと同じディレクトリに配置されている必要があります。
- イメージは、幅が約 80 ピクセル以内のものを使用することをお勧めします。
package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Loader; import flash.display.Sprite; import flash.events.*; import flash.geom.Point; import flash.geom.Rectangle; import flash.net.URLRequest; public class BitmapDataExample extends Sprite { private var url:String = "Image.gif"; private var size:uint = 80; public function BitmapDataExample() { configureAssets(); } private function configureAssets():void { var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); var request:URLRequest = new URLRequest(url); loader.x = size * numChildren; loader.load(request); addChild(loader); } private function duplicateImage(original:Bitmap):Bitmap { var image:Bitmap = new Bitmap(original.bitmapData.clone()); image.x = size * numChildren; addChild(image); return image; } private function completeHandler(event:Event):void { var loader:Loader = Loader(event.target.loader); var image:Bitmap = Bitmap(loader.content); var duplicate:Bitmap = duplicateImage(image); var bitmapData:BitmapData = duplicate.bitmapData; var sourceRect:Rectangle = new Rectangle(0, 0, bitmapData.width, bitmapData.height); var destPoint:Point = new Point(); var operation:String = ">="; var threshold:uint = 0xCCCCCCCC; var color:uint = 0xFFFFFF00; var mask:uint = 0x000000FF; var copySource:Boolean = true; bitmapData.threshold(bitmapData, sourceRect, destPoint, operation, threshold, color, mask, copySource); } private function ioErrorHandler(event:IOErrorEvent):void { trace("Unable to load image: " + url); } } }
Tue Jun 12 2018, 10:34 AM Z