-1

Flash の [Fill and Stroke] オプションで、ライブラリのテクスチャの 1 つとして図形に色を付けることができます。例: http://i1.minus.com/iban9aRUCI7UTf.png

AS3コードでこれを行うにはどうすればよいですか?

4

2 に答える 2

1

GraphicsAPI で描画している場合は、 beginBitmapFillを使用できます。

ライブラリ内の画像のプロパティを開き、 [ActionScript] タブの [ ActionScript にエクスポート] をオンにします。「 MyTexture 」などのクラス名を付けると、次のように使用できます。

var texturedCircle:Sprite = new Sprite();
texturedCircle.graphics.beginBitmapFill(new MyTexture());
texturedCircle.graphics.drawCircle(0, 0, 100);
于 2013-01-29T15:45:48.923 に答える
0

これには 2 つのステップでアプローチできます。

  1. ビットマップ値から平均色を計算します。以下の関数 ( Soulwireによって作成された) は、「BitmapData オブジェクト内のピクセルをループし、赤、緑、青の値をすべて加算し、それらをピクセルの総数で割ってから、結果から新しい色を作成することによって、これを行います。 ."

function averageColour(source:BitmapData):uint {
    var red:Number = 0;
    var green:Number = 0;
    var blue:Number = 0;
    var count:Number = 0;
    var pixel:Number;

    for (var x:int = 0; x < source.width; x++) {
        for (var y:int = 0; y < source.height; y++) {
            pixel = source.getPixel(x, y);

            red += pixel >> 16 & 0xFF;
            green += pixel >> 8 & 0xFF;
            blue += pixel & 0xFF;

            count++
        }
    }

    red /= count;
    green /= count;
    blue /= count;

    return red << 16 | green << 8 | blue;
}

  1. ColorTransformを使用して適用します。

function setColor(obj:Object, color:uint, alpha:Number = 1):void {
    /* Colors the object using uint */

    // Pull the individual primaries
    var r:Number = (color >> 16 ) & 0xFF;
    var g:Number = (color >> 8) & 0xFF;
    var b:Number = color & 0xFF;

    obj.transform.colorTransform = new ColorTransform(0,0,0,alpha,r,g,b,0);
}

于 2013-01-29T15:44:07.203 に答える