0

基本的に、プログラムで3つの白い長方形を描画し、それらをわずかに重ねてからそれぞれにドロップシャドウを付けることで、3枚の紙の錯覚を作成しようとしています. その後、トゥイーンでサイズを変更できます。

それらにフィルターがない場合、問題なく鮮明に機能します。ただし、フィルターを追加するとすぐに、不正確に描画されます。幅によっては、フラッシュが紙の 1 つをレンダリングするのを忘れたり、X 値が間違ったりすることがよくあります。

それを修正する方法についてのアイデアはありますか?

これが私のコードです:

   public function Paper():void{    
        a = new MovieClip();
        a.graphics.beginFill(0xFFFFFF);
        a.graphics.drawRect(0,0,10,stage.stageHeight+100);


        b = new MovieClip();
        b.graphics.beginFill(0xFFFFFF);
        b.graphics.drawRect(0,0,10,stage.stageHeight+100);


        c = new MovieClip();
        c.graphics.beginFill(0xFFFFFF);
        c.graphics.drawRect(0,0,10,stage.stageHeight+100);
        this.addChild(c);
        this.addChild(b);
        this.addChild(a);

        b.filters = c.filters = a.filters = [new DropShadowFilter(5,90,0,0.6,10,10,1,4)];
        this.width = 800;

        b.y = 2;
        c.y = 4;
        this.y = 40;            
    };  

    public override function set width(value:Number):void{
        a.width = value;
        b.width = value+4;
        c.width = value+8;

        a.x = stage.stageWidth - a.width;
        b.x = a.x -2;
        c.x = a.x -4;       
    };

public function animateToWidth(target:Number):void{
        new GTween(this,0.5,{width:target},{ease:Sine.easeInOut});          
    };

10 進値が原因である場合に備えて、幅セッターで値を丸めてみましたが、効果はありませんでした。基本的に、コードのフィルター行をコメントアウトすると完全に機能しますが、フィルターを有効にするとすぐに突然フラッシュが発生し、長方形を適切に配置できません

2 つの異なる幅の例を次に示します。1 つの白い四角形では、各ステップの間に 2 ピクセルがあり、もう 1 つの場合と同様に、最下層には 4 ピクセルがあり、中間層には 1 ピクセルしかありません。

ここに画像の説明を入力 ここに画像の説明を入力

何か案は?画像データを使用する必要がないようにしたかったのですが、グラフィックをトゥイーンするだけでよいのではないかと考えています。

ありがとう

4

0 に答える 0