ActionScript Gradient条带问题

时间:2010-05-20 10:20:52

标签: actionscript-3 gradient

我有一个奇怪的问题,在渐变的某些颜色之间划分。

创建渐变,我从中心到边框均匀地绘制圆形楔形,并从循环中的位图线渐变像素填充每个圆形楔形。

我正在创建一个有3600个楔形的圆圈,虽然它看起来不像是基于从红色到黄色数字渐变产生的橙色颜色的屏幕截图。在红色和黄色之间添加橙色数字无济于事。但如果我创建的圆圈只有360个楔形,则渐变条纹更加明显。 3600可能是矫枉过正,并没有真正添加更多细节,比如说,制作1440楔形圈,但我不知道有任何其他方法可以略微提升这个条带问题。

任何想法如何解决这个问题,或者我做错了什么?它可能是由circleMatrix旋转造成的吗?

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我认为绑定是由你的比率引起的。

试试这个:

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

另外,objMatrix实际上应该是circleMatrix吗?

您可以在LiveDoc's

中看到[127,255]和[0,255]之间的差异