Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 应用DropShadowFilter时不精确绘图_Actionscript 3 - Fatal编程技术网

Actionscript 3 应用DropShadowFilter时不精确绘图

Actionscript 3 应用DropShadowFilter时不精确绘图,actionscript-3,Actionscript 3,基本上,我试图通过编程绘制3个白色矩形并使它们稍微重叠,然后在每个矩形上有一个阴影,来创建3张纸的错觉。然后我可以调整它们的大小 如果我没有在他们身上的过滤器,它的工作细脆。然而,一旦我添加了他们绘制不准确的过滤器,在某些宽度上,flash就会忘记渲染其中一张纸,或者经常得到错误的X值 有没有办法解决这个问题 这是我的密码: public function Paper():void{ a = new MovieClip(); a.graphics.b

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

如果我没有在他们身上的过滤器,它的工作细脆。然而,一旦我添加了他们绘制不准确的过滤器,在某些宽度上,flash就会忘记渲染其中一张纸,或者经常得到错误的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:

有什么想法吗?我希望避免使用图像数据,但我想我可能只需要使用两种图形


谢谢

可能是
GTween
导致问题吗?不,即使我没有调用animateToWidth,它仍然有问题,这取决于我设置的宽度,它绘制的不同。