`

[转]渐变填充

 
阅读更多

那是因为渐变填充默认的起始点是(0, 0),也就是说,放射性填充的中心点是在所要绘制的对象的左上角,而楼主所绘制的矩形位于(100, 100)的位置,所以只能填充到最外面的黑色。
需要给渐变填充传入一个转换矩阵,将填充的中心点移到矩形的中间:
  1. var container:Sprite = new Sprite();
  2. addChild(container);

  3. //转换矩阵
  4. var matr:Matrix = new Matrix();
  5. matr.createGradientBox(300, 150, 0, 100, 100);

  6. container.graphics.lineStyle(4,0xff0000);
  7. //container.graphics.beginFill(0x00ff00,1);
  8. container.graphics.beginGradientFill(GradientType.RADIAL,[0xff0000,0x00ff00,0x000000],[1,1,1],[0,10,200], matr);
  9. container.graphics.drawRect(100, 100, 300, 150);
复制代码
Matrix表示转换矩阵,它的createGradientBox方法的有5个参数:
第一个参数width:渐变填充范围的宽度
第二个参数height:渐变填充范围的高度
第三个参数rotation:渐变填充的角度
第四个参数tx:渐变填充的中心点在x轴上的偏移量
第五个参数ty:渐变填充的中心点在y轴上的偏移量

createGradientBox(300, 150, 0, 100, 100)
把填充范围设置为宽300、高150的矩形(宽高不同会把填充圆压扁,如果需要保持正圆,设置宽高的值一样就行了,例如把高也设置为300),并将中心点移动到(100,100)的位置,因为是放射性填充,所以填充角度多少都没所谓。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics