1

私はそのような効果を作りたい: ドラッグ可能な半透明のオブジェクト (これを「プラスチック ストリップ」と呼びましょう) をウィンドウ上で任意のオブジェクトにします。プラスチック ストリップは濁っている必要があります。つまり、その下のコンテンツがぼやけます (それ自体がぼやけるわけではありません)。Flex の PixelBender シェーダーでそれを行う最善の方法は何ですか?

4

1 に答える 1

1

実際、それは単純になりました。プラスチック ストリップを更新するには、ウィンドウ コンテンツをビットマップに描画し、それをシェーダーにフィードしてストリップを描画します (blurredここで呼び出されます)。

private function onBlurredUpdate():void {
    matrix.identity();
    matrix.translate(-blurred.x, -blurred.y);
    clipRect.width = blurred.width;
    clipRect.height = blurred.height;

    body.removeChild(blurred);
    bitmapData.draw(body, matrix, null, null, clipRect);
    body.addChild(blurred);

    shader.data.src.input = bitmapData;

    var graphics:Graphics = blurred.graphics;
    graphics.clear();
    graphics.lineStyle(2, 0xC0C0C0);
    graphics.beginShaderFill(shader);
    graphics.drawRoundRect(0, 0, blurred.width, blurred.height, 10, 10);
    graphics.endFill();
}

シェーダーは、PixelBender サンプルからの単純なボックス フィルターです。描画する前にウィンドウからストリップを削除しないと、おかしなフィードバック効果が得られます - ぼやけたピクセルはインクのようにぼやけ続けます。

于 2010-11-12T14:26:34.630 に答える