blendMode (MovieClip.blendMode プロパティ)

public blendMode : Object

このムービークリップのブレンドモード。ブレンドモードは、画面上の別のオブジェクトの上のレイヤー内におけるムービークリップの外観に影響します。

Flash Player は blendMode プロパティをムービークリップの各ピクセルに適用します。各ピクセルは、3 つの要素カラー (赤、緑、青) で構成されており、各要素カラーは 0x00 ~ 0xFF の値を持ちます。Flash Player は、ムービークリップの 1 つのピクセルの各要素カラーを、背景のピクセルの対応するカラーと比較します。たとえば、blendMode"lighten" に設定されている場合、Flash Player はムービークリップの赤の値と背景の赤の値とを比較し、明るい方を表示色の赤成分として使用します。

次の表で、blendMode の設定について説明します。blendMode プロパティを設定するには、1 ~ 14 の整数またはストリングを使用できます。表の中の図は、画面上の別のオブジェクト (1) に重なった円のムービークリップ (2) に適用される blendMode の値を示しています。





整数値

ストリング値

説明

1

"normal"



ムービークリップは、背景の前に表示されます。ムービークリップのピクセル値により、背景のピクセル値が無効になります。ムービークリップが透明な部分では、背景が表示されます。

2

"layer"



ムービークリップを事前構成するための一時バッファの作成を強制します。この処理は、ムービークリップに子のオブジェクトが複数存在し、子の blendMode"normal" 以外に設定されている場合に自動的に行われます。

3

"multiply"



ムービークリップの要素カラーの値と背景色の値とを乗算した後、0xFF で除算して正規化して、色を暗くします。これは、シャドウや深度効果によく使用されます。

たとえば、ムービークリップ内のあるピクセルの要素カラー (たとえば赤) と背景のピクセルの対応するカラーの値がともに 0x88 である場合、乗算した結果は 0x4840 です。0xFF で除算すると、その要素カラーの値が 0x48 となり、ムービークリップや背景よりも濃い色になります。

4

"screen"



ムービークリップの色の補数 (逆) と背景色の補数を乗算して、ブリーチ効果を得ます。この設定は、ハイライトや、ムービークリップの黒い領域の削除によく使用されます。

5

"lighten"



ムービークリップの要素カラーと背景の要素カラーのうち明るい方 (値が大きい方) を選択します。この設定は、重ね合わせタイプによく使用されます。

たとえば、ムービークリップのピクセルの 1 つの RGB 値が 0xFFCC33 で、背景のピクセルの RGB 値が 0xDDF800 の場合、表示されるピクセルの RGB 値は 0xFFF833 になります (0xFF > 0xDD、0xCC < 0xF8、および 0x33 > 0x00 のそれぞれの大きい方が採用されます)。

6

"darken"



ムービークリップの要素カラーと背景の要素カラーのうち暗い方 (値が小さい方) を選択します。この設定は、重ね合わせタイプによく使用されます。

たとえば、ムービークリップのピクセルの 1 つの RGB 値が 0xFFCC33 で、背景のピクセルの RGB 値が 0xDDF800 の場合、表示されるピクセルの RGB 値は 0xDDCC00 になります (0xFF > 0xDD、0xCC < 0xF8、および 0x33 > 0x00 のそれぞれの小さい方が採用されます)。

7

"difference"



ムービークリップの要素カラーと背景の要素カラーを比較し、2 つの要素カラーのうち明るい方の値から暗い方の値を差し引きます。この設定は、鮮やかな色にする場合によく使用されます。

たとえば、ムービークリップのピクセルの 1 つの RGB 値が 0xFFCC33 で、背景のピクセルの RGB 値が 0xDDF800 の場合、0xFF - 0xDD = 0x22、0xF8 - 0xCC = 0x2C、0x33 - 0x00 = 0x33 のため、表示されるピクセルの RGB 値は 0x222C33 になります。

8

"add"



ムービークリップの要素カラーの値を背景の要素カラーに加算し、上限 0xFF を適用します。この設定は、2 つのオブジェクト間で色を明るくするディゾルブをアニメーションにするときによく使用されます。

たとえば、ムービークリップのピクセルの 1 つの RGB 値が 0xAAA633 で、背景のピクセルの RGB 値が 0xDD2200 の場合、0xAA + 0xDD > 0xFF、0xA6 + 0x22 = 0xC8、0x33 + 0x00 = 0x33 のため、表示されるピクセルの RGB 値は 0xFFC833 になります。

9

"subtract"



結果の下限を 0 として、ムービークリップの要素カラーの値をその背景の要素カラーの値から減算します。この設定は、2 つのオブジェクト間で色を暗くするディゾルブをアニメーションにするときによく使用されます。

たとえば、ムービークリップのピクセルの 1 つの RGB 値が 0xAA2233 で、背景のピクセルの RGB 値が 0xDDA600 の場合、0xDD - 0xAA = 0x33、0xA6 - 0x22 = 0x84、0x00 - 0x33 < 0x00 のため、表示されるピクセルの RGB 値は 0x338400 になります。

10

"invert"



背景を反転します。

11

"alpha"



ムービークリップの各ピクセルのアルファ値を背景に適用します。そのためには、blendMode の設定 "layer" を親ムービークリップに適用する必要があります。たとえば、図の親ムービークリップ (白い背景) は、blendMode = "layer" に設定されています。

12

"erase"



ムービークリップのアルファ値に基づいて背景を消去します。そのためには、blendMode の設定 "layer" を親ムービークリップに適用する必要があります。たとえば、図の親ムービークリップ (白い背景) は、blendMode = "layer" に設定されています。

13

"overlay"



背景の暗さに基づいて、各ビットマップの色を調整します。背景が 50% グレーよりも明るい場合、ムービークリップと背景の色が網がけされ、明るくなります。背景が 50% グレーよりも暗い場合、2 つの色が乗算されて、より暗くなります。この設定は、シャドウ効果によく使用されます。

14

"hardlight"



ムービーの暗さに応じて、各ビットマップの色を調整します。ムービークリップが 50% のグレーよりも暗い場合、ムービークリップと背景の色が網がけされ、明るくなります。ムービークリップが 50% グレーよりも暗い場合、2 つの色が乗算されて、より暗くなります。この設定は、シャドウ効果によく使用されます。

blendMode プロパティを他の値に設定しようとすると、プロパティは "normal" に設定されます。

ただし、このプロパティを整数に設定すると、その値は対応するストリングバージョンに直ちに変換されます。

this.createEmptyMovieClip("mclip", this.getNextHighestDepth());
mclip.blendMode = 8;
trace(mclip.blendMode) // add

対応バージョン : ActionScript 1.0、Flash Player 8

次の例では、グラデーションの塗りで 2 つのムービークリップを設定し、前景にある片方のムービークリップのブレンドモードを 1 秒ごとに変更します。効果に "alpha" ブレンドモードが現れるように、ムービークリップ mc2 のグラデーションにアルファ比の範囲が含まれ、親のムービークリップに "layer" ブレンドモードが適用されます(this.blendMode="layer")。

    this.createEmptyMovieClip("mc1", this.getNextHighestDepth());
    this.createEmptyMovieClip("mc2", this.getNextHighestDepth());
    this.blendMode="layer";
    this.createTextField("blendLabel", this.getNextHighestDepth(), 50, 150, 100, 100)
    
    fillClip(mc1, 0x00AA00, 0x22FFFF, 100, 100)
    fillClip(mc2, 0xFF0000, 0x2211FF, 100, 50)
    mc2._x = 33;
    mc2._y = 33;
    
    var blendModeIndex = 0;
    
    setInterval(changeBlendMode, 1000);
    function changeBlendMode() 
    {
        mc2.blendMode = blendModeIndex % 14 + 1 ;
            // values 1 - 14
    blendLabel.text = (blendModeIndex% 14 + 1) + ": " + mc2.blendMode;
        blendModeIndex++;
    }
    
    function fillClip(mc:MovieClip, color1:Number, color2:Number,
                alpha1:Number, alpha2: Number) 
{
        matrix = {a:100, b:0, c:0, d:0, e:100, f:0, g:50, h:20, i:1};
        mc.beginGradientFill("linear", [color1, color2], [alpha1, alpha2], [0, 0xFF], matrix);
        mc.lineStyle(8,0x888888,100)
        mc.moveTo(0, 0);
        mc.lineTo(0, 100);
        mc.lineTo(100, 100);
        mc.lineTo(100, 0);
        mc.lineTo(0, 0);
        mc.endFill();
    }

SWF ファイルにバージョン 2 のコンポーネントがある場合は、この例で使用している MovieClip.getNextHighestDepth() メソッドの代わりに、バージョン 2 のコンポーネントの DepthManager クラスを使用します。


 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00001898.html