基本上,我试图通过编程绘制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:
任何想法?我希望避免使用图像数据,但我想我可能只需要补间图形。
感谢