Actionscript 3 ActionScript梯度带状问题
我有一个奇怪的问题,在渐变的某些颜色之间有条带 为了创建渐变,我从中心到边界绘制等距的圆楔,并从循环中的位图线渐变像素填充每个圆楔 我正在创建一个带有3600个楔子的圆,尽管它看起来不像是基于从红色到黄色数字渐变而成的橙色屏幕截图。在红色和黄色之间添加橙色数字没有帮助。但是如果我用360个楔子创建一个圆,渐变条带会更明显。3600可能有些过分了,并没有增加更多的细节,比如说,制作1440个楔子的圆,但我不知道有什么其他方法可以稍微提高这个带状问题 你知道我该怎么解决这个问题,或者我做错了什么吗?它可能是由环形矩阵旋转引起的吗Actionscript 3 ActionScript梯度带状问题,actionscript-3,gradient,Actionscript 3,Gradient,我有一个奇怪的问题,在渐变的某些颜色之间有条带 为了创建渐变,我从中心到边界绘制等距的圆楔,并从循环中的位图线渐变像素填充每个圆楔 我正在创建一个带有3600个楔子的圆,尽管它看起来不像是基于从红色到黄色数字渐变而成的橙色屏幕截图。在红色和黄色之间添加橙色数字没有帮助。但是如果我用360个楔子创建一个圆,渐变条带会更明显。3600可能有些过分了,并没有增加更多的细节,比如说,制作1440个楔子的圆,但我不知道有什么其他方法可以稍微提高这个带状问题 你知道我该怎么解决这个问题,或者我做错了什么吗?
我认为这是由你的比率造成的 试试这个:
graphics.beginGradientFill(GradientType.LINEAR, [nColor, nColor], [1, 1], [0, 255], objMatrix)
另外,objMatrix实际上应该是circleMatrix吗
您可以在编辑中看到[127255]和[0255]之间的差异:
由于精度错误,可能会出现一些伪影,因为您只有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++)
{
//...
/。。。
//将位图数据指定给leftToRightLine
变量leftToRightLineBitmapData:BitmapData=
新位图数据(leftToRightLine.width、leftToRightLine.height);
leftToRightLineBitmapData.draw(leftToRightLine);
//向色带添加一些模糊过滤器
filters=[新的模糊过滤器(2,0,3)];
//复制位图上的色带,但从右1像素开始,以避免
//开始时的模糊
draw(leftToRightLine,新矩阵(1,0,0,1,1));
对于(变量i:int=1;i<(默认带状质量+1);i++)
{
//...
没有完整的代码进行测试,很难知道我的目标是否正确;)
- 弧度转换中有一个错误,它是
而不是/1800,因此现在您可以转到i*Math.pi/180
而不是360
3600
- 为什么从1开始而不是从0开始
- 尝试使用线条粗细并使用lineGradientStyle
- 您引用了一个
,但创建了一个objMatrix
circleMatrix