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