2009-07-08 49 views
1

我使用AS3 drawRoundRect功能下面的代碼片段:的ActionScript drawRoundRect呈現模糊的角落

g.lineStyle(1, 0x808080, 1, true); 
g.drawRoundRect(0, 0, 100, 24, 12, 12); 

正如你所看到的,像素提示上。

我遇到的問題是角落被反鋸齒的方式太多,他們太模糊,甚至沒有對稱上面的片段。坦率地說,drawRoundRect函數繪製了我見過的最醜陋的圓角矩形。

有沒有辦法讓AS3繪製更清晰的矩形?

謝謝! :)

回答

3

填充比線條更好。你可以在這裏看到:

const thickness:Number = 1; 
g.beginFill(0x080808); 
g.drawRoundRect(0, 0, 100, 24, 12); 
g.drawRoundRect(thickness, thickness, 100 - 2 * thickness, 24 - 2 * thickness, 12 - thickness); 
g.endFill(); 
g.lineStyle(thickness, 0x080808, 1, true); 
g.drawRoundRect(0, 50, 100, 24, 12); 

很好,這是不是SOOOOOOOOOOO unincredibly更好...:-S ......但至少它的對稱的......而在角落的污跡都比較像小珠。 .. :-D

格爾茨

back2dos

+0

我用你的訣竅與rhtx的drawRoundRectComplex函數,將較小的矩形覆蓋在稍大一點的邊界上。這並不完美,但至少看起來好一點。 – 2009-07-09 17:57:33

1

我以前也有類似的問題。它通常歸結爲顯示路徑上的其中一個影片剪輯不在偶像素上。 Flash然後嘗試渲染小數像素,這是它無法做到的,這會導致失真和模糊。因此,請確保所有的影片剪輯/精靈都在一個偶數像素上(我知道你正在繪製偶數像素的矩形,但如果它所屬的顯示對象或它的任何父母都不在一個偶數像素上像素,這會導致問題)。

+0

我確定我正在繪製偶像素,沒有像1.5等值我試着玩弄不同的值,但無濟於事。 – 2009-07-09 07:21:14

1

我也有同樣的交易。你可以嘗試的一個詭計就是將小模糊過濾器應用於父母對象。

看起來您正在使用Graphics類的drawRoundRect方法。

如果您使用的對象是UIComponent,則可以嘗試使用UIComponent的drawRoundRect方法。它爲cornerRadius值取對象,而不是設置橢圓寬度和高度值。我並不是100%確定cornerRadius的值沒有被轉換成橢圓的寬度和高度,但它好像是需要嘗試的東西。

此外,您可以嘗試GraphicsUtil類的drawRoundRectComplex。每個角的半徑需要一個數字。再次,不完全確定它最終不會使用與drawRoundRect相同的基礎機制。

+0

您的評論幫助了很多,drawRoundRectComplex函數至少比其他drawRoundRect更對稱。 – 2009-07-09 17:56:08

1

當使用drawRoundRect設置X爲一半的厚度,然後厚度將是圓形的像素。在這你的情況嘗試:

g.lineStyle(1, 0x808080, 1, true); 
g.drawRoundRect(0.5, 0.5, 99, 23, 12, 12); 
+0

它適合我!我真的不明白爲什麼,但是......很有效! – tibo 2012-07-18 01:05:53