应用投影滤镜时不准确绘图

时间:2013-06-11 16:58:02

标签: actionscript-3

基本上,我试图通过编程绘制3个白色矩形并使它们稍微重叠然后在每个上面都有一个投影来创建3张纸的错觉。然后我可以补间以调整它们的大小。

如果我没有过滤器,它可以正常工作。但是,一旦我添加过滤器,它们就会不准确地绘制,在某些宽度下,闪存会忘记渲染其中一篇文章,或者经常会得到错误的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});          
    };

我尝试在宽度设置器中舍入值,以防它由十进制值引起但是没有效果。基本上,如果我注释掉滤波器代码行,它可以很好地工作,但是一旦启用滤波器,突然闪光就无法正确定位矩形

下面是两个不同宽度的示例,请注意每个白色矩形在每个步骤之间是如何具有2px的,而在另一个中底层具有4个像素而中间层仅具有1px:

enter image description here enter image description here

任何想法?我希望避免使用图像数据,但我想我可能只需要补间图形。

感谢

0 个答案:

没有答案