2010-02-02 91 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類上。