2009-02-24 46 views
2

如果你嘗試下面的代碼:如何阻止Flex/AIR異或填充?

g.beginFill(0xFF0000); 
g.drawRect(0, 0, 50, 50); 
g.drawRect(25, 25, 50, 50); 
g.endFill(); 

你可能會認爲,這將得出2個重疊的紅色方塊。但是,它不會 - 除了現在完全透明的重疊區域外,它會繪製兩個紅色正方形。

任何想法如何解決這個問題?

爲接受後回答:

感謝Christophe Herreman!將代碼更改爲:

g.beginFill(0xFF0000); 
g.drawRect(0, 0, 50, 50); 
g.endFill(); 
g.beginFill(0xFF0000); 
g.drawRect(25, 25, 50, 50); 
g.endFill(); 

按照預期工作!我有興趣知道這是「預期的行爲」還是實際的錯誤!

回答

4

endFill()之前的所有調用將只存儲要繪製的多邊形的點,並在調用endFill()時連接它們。由於您示例中的代碼具有重疊部分,因此在繪製多邊形的實際線時會將其濾除。我其實不知道這是Flash播放器的預期行爲還是錯誤。

爲了解決這個問題,只需在繪製新矩形之前添加一個新的調用beginFill()。

g.beginFill(0xFF0000); 
g.drawRect(0, 0, 50, 50); 
g.beginFill(0xFF0000); 
g.drawRect(25, 25, 50, 50); 
g.endFill(); 
0

你不需要創建第二個圖形對象來應用第二個填充?我敢打賭,你確實有一個奇怪形狀的圖形對象,而不是兩個相交的矩形。