1

ハイ、私はActionScriptの初心者です。

私はactionscript3でブラシツールを作成しようとしています。このツールでは、子供がブラシを使用して円の内側に色をペイントできます。私はlinestyleを使用してこれを達成しました。今、私は子供が完成しようとしているときにブラシが色をスナップするようにしたいです(たとえば、彼らが絵を完成させるために95%になったとき)。子供が円にどれだけ描いたかをどうやって知ることができますか?

ありがとう

4

1 に答える 1

1

子供が円にどれだけ絵を描いたかを知るにはどうすればよいですか?

あなたはできる:

  • 円やその他の形状をスプライトにして、別のコンテナを取得します
  • それらをビットマップにレンダリングし、その中の非透明ピクセルの数を数えます(100%に対応する数を知っておく必要があります)
  • ピクセルのカウントは重い操作なので (形状のサイズによっては数百ミリ秒かかる場合があります)、すべてのフレームで実行したくありません。子供が次のストロークを終えた直後に、MOUSE_UP で行うことをお勧めします。

ピクセルの数え方:

function countPixels(shape:DisplayObject):int
{
    var bd:BitmapData = new BitmapData(shape.width, shape.height);
    bd.draw(shape);

    //here you get sequence of ARGB-packed colors in vector
    var pixels:Vector.<uint> = bd.getVector(bd.rect);

    //AFAIK, fastest method to traverse vector is 'for' loop
    var pixel:uint;
    var filledCount:int = 0;
    for (var i:int = pixels.length - 1; i >= 0; i--)
    {
        pixel = pixels[i];
        //pixel is 32-bit ARGB color value, test upper 8 bits (alpha):
        if ((pixel >> 24) > 0) filledCount++;
    }
    return filledCount;
}

塗りつぶされた形状でこれを実行して、比較する合計ピクセル数を取得します。
pixelCount が 95% に達したら、子供の描画をクリアして、塗りつぶされた図形を表示できます。

于 2011-04-11T07:41:19.937 に答える