2009-05-06 86 views
4

如果我有一個精靈,我已經繪製了一些東西,我該如何抹掉我繪製的部分?最好我可以使用drawRect()與一些「alpha = 0」油漆。擦除精靈圖形?

但是,我不相信beginFill()方法可以讓您設置RGBA顏色(就像您可以在bitmapData中那樣)。在beginFill()的圖形方法中設置alpha = 0並沒有真正做任何事 - 它只是沒有畫任何東西。

在我的特殊用例中,掩蔽不是一個選項。

此外,調用clear()是不是一個很好的解決方案,因爲它清除了一切。

回答

5

不幸的是,你不能做你希望與Graphics類到底該怎麼做。儘管擦除可能意味着你繪製了已經用背景顏色繪製的東西,但我猜你希望將「繪製透明度」繪製回Graphics對象。使用0的alpha繪製不會繪製「無」 - 您只是看不到您繪製的內容,因爲它完全透明。

這就是你用,而不是位圖矢量工作。要「刪除」矢量的一部分意味着您要創建一個全新的矢量,這需要進行一些計算,而不是將某個像素設置爲某個顏色值。圖形不提供這樣的高級功能,儘管你可以編寫自己的函數來完成它。 :P

一種解決方法是使用位圖來代替:
http://www.actionscript.org/forums/showthread.php3?t=187857
http://www.actionscripts.org/forums/showthread.php3?t=149021

另一種是考慮是否可以實現你想用不同的方式做什麼;一個可以使用clear()的。

0

如果你打算要保留您的繪圖的一部分,同時消除其他一些地區則是唯一可行的途徑是使用幾個精靈繪製。 爲繪圖的每個部分創建一個精靈,然後你可以選擇你想要刪除的精靈並離開其餘部分。

除此之外,你只剩下被使用的BitmapData然後用清晰的再次提請抄截後進行復制的部分。 (這將是很難在複雜的莊園來實現,嘗試複製只是複雜的彎曲的區域!)

10

可以很好地做到這一點,如果你並不需要能夠與您的雪碧下面的所有元素進行交互。

爲此

  1. 創造你想要的形狀一個Shape對象,並設置其cacheAsBitmap屬性true
  2. 設置你的精靈的cacheAsBitmap屬性true
  3. 設置你的形狀的blendMode屬性BlendMode.ERASE
  4. 將形狀添加到您的雪碧的顯示列表
+0

這可以幫助我很多,thak you .. :)),, – 2012-08-30 23:22:37