2010-02-02 92 views
3

我有一系列的动画片段包含位图和文本。 应用了一些3D变换并在三维空间中移动后,我的文本和位图稍微模糊。这是后我重置所有的三维坐标(即z = 0,rotationX = 0,rotationY = 0) 有没有其他人遇到过这个?有没有解决方案让我的清晰的文字和位图回来?稍微模糊的文字和位图后3D转换

回答

1

您需要确保在将3D转换应用到的任何对象上将matrix3D属性设置为null。

+0

是的,听起来不错,但你失去了3D变换。 – 2012-04-17 03:06:25

+0

这打破了你可能需要的3DTransform。 – earl3s 2013-08-09 22:54:04

0

在3d问题上查找另一篇文章,并遇到了解决方案。 您需要通过应用新的transfrom.matrix删除所有3d转换。 this.transform.matrix = tempMatrix;

+0

模糊将由矩阵数学中的累积舍入误差引起。我在Silverlight中也注意到了类似的效果。 – ChrisF 2010-02-02 13:18:55

2

这是一个非常有趣的错误。

出现的模糊效果实际上是不正确的反锯齿或平滑处理,通常通过沿着边缘呈现精细颜色的字体来解决。在这种情况下,它实际上是造成3D转换,并且可以通过动画抵消后的matrix3D解决:

myTextContainer.transform.matrix3D = null; 

你也可以这样写:

myTextContainer.transform.matrix = new Matrix(); 

,但这种方法你会必须导入flash.geom.Matrix

两个选项也将清零时xy坐标,以及可能的动画显示对象的其他重要设置,这样你也有这些变量分配值和抵消的变换矩阵后重新应用。

似乎一旦字体被转换,它就会失去这种美好的色彩。非转换字体具有这些颜色细节,而转换字体完全去饱和。

附加的是放大12点字体的细节,其展现了这种颜色细节的损失。顶部的弦没有3D转换,而底部的弦通过rotationY在舞台上动画。

enter image description here

这里是饱和的90%更清楚地显示颜色相同的图像:

enter image description here

这些色彩细节都更容易看到灰色的文字。

我相信自Flash Player 9/AVM2首次推出以来,这个错误一直存在。此外,在Flash播放器的早期版本中,正确渲染字体周围细腻的色彩细节更加饱和,在我看来,这使得字体看起来好多了 - 虽然与我自己不同,非完美主义者可以忽略不同。

+0

这仍然是Adobe Animate中的一个问题 - Flash player 25 ........感谢您的解决。 – Zze 2017-08-22 00:32:43

0

更好的答案是使用此修复程序。这是我以前常用的一个。

/** 
    * Fixes the slight distortion that occurs when an object has a 3D transform associated with it. 
    * @param di:DisplayObject The DisplayOjbect to fix. 
    */ 
    public function fix3DBlur(di:DisplayObject):void { 
     di.scaleX = di.width/(di.width - 1); 
     di.scaleY = di.height/(di.height - 1); 
    } 

此函数设置略微偏移scaleX和scaleY。这看起来很奇怪,但是当你使用任何3D属性对对象进行3D调整时,它不会看起来模糊。您可以随时删除3DTransform,但有时您需要将其保留原位。

我把这个函数放在我有的Utilities3D类上。