2010-05-20 86 views
0

我在梯度的某些顏色之間出現一條奇怪的問題。ActionScript漸變條紋問題

創建漸變,我從中心到邊框繪製均勻間隔的圓楔形,並從循環中的位圖線漸變像素填充每個圓楔形。

我使用3600個楔子創建了一個圓,雖然它看起來不像基於從紅色到黃色數字漸變產生的橙色內的屏幕截圖。在紅色和黃色之間添加一個橙色數字並沒有幫助。但如果我只用360個楔子創建圓圈,漸變條紋就更明顯了。 3600可能是矯枉過正的,並沒有真正添加更多的細節,比如說,製作1440個楔子的圈子,但我不知道任何其他方式來稍微提升這個問題。

任何想法如何我可以解決這個問題,或者我做錯了什麼?它可能是由circleMatrix旋轉引起的?

alt text http://www.freeimagehosting.net/uploads/7e3382befe.jpg

+0

不得不修改一些複製粘貼錯誤 – TheDarkIn1978 2010-05-20 11:43:45

回答

1

編輯的區別: 由於精度誤差一些神器出現,因爲你只有一個範圍255個的值分發。

爲了減少這種視覺效果,你可以嘗試一些模糊添加到您的色帶,但左邊和右邊之間的連接要注意:如果沒有完整的代碼來測試

//... 

//Assign bitmapData to the leftToRightLine 
var leftToRightLineBitmapData:BitmapData = 
        new BitmapData(leftToRightLine.width,leftToRightLine.height); 
leftToRightLineBitmapData.draw(leftToRightLine); 

// add some blur filter to the color band 
leftToRightLine.filters=[new BlurFilter(2,0, 3)]; 

// copy the color band on the bitmap but but starting at 1 pixel right to avoid 
// the blur on the start 
leftToRightLineBitmapData.draw(leftToRightLine, new Matrix(1,0,0,1, 1)); 

for(var i:int = 1; i < (DEFAULT_BANDING_QUALITY + 1); i++) 
{ 
    //... 

,很難知道如果我在正確的方向瞄準;)

  • 。在你的弧度轉換的錯誤它i*Math.pi/180而不是/1800,所以現在你可以去360而不是3600
  • 爲什麼從1開始而不是從0開始?

  • 嘗試與線條的粗細播放和使用調用lineGradientStyle

  • 你引薦一個objMatrix但創建circleMatrix

+0

我編輯了我的代碼以顯示一切。希望你能幫助我找出錯誤 – TheDarkIn1978 2010-05-20 11:55:52

+0

@ TheDarkIn78好吧,我編輯了我的回答 – Patrick 2010-05-20 14:10:56

+0

謝謝。我希望它不必使用過濾器,但它有訣竅。而不是將其添加到位圖,我只是在整個精靈上拋出一個2像素x 2px濾鏡。此外,我將默認的條帶質量降低到720,因爲它看起來與3600相同,但加載方式更快。我假設他們基於你提到的這個限制看起來相同?你能否提供關於這個分佈範圍限制爲255的解釋,以及實際發生了什麼? – TheDarkIn1978 2010-05-20 14:55:45

0

我認爲條紋是由您的比例造成的。

試試這個:

graphics.beginGradientFill(GradientType.LINEAR, [nColor, nColor], [1, 1], [0, 255], objMatrix) 

此外,應objMatrix實際上是circleMatrix?

你可以看到[127,255]和[0,255]之間的LiveDoc's

+0

的比率從中心。我已經更新了我的代碼,以便您可以充分使用它。 – TheDarkIn1978 2010-05-20 12:19:16