线条绘制(lineStyle)的疑问

flash.display.Graphics.lineStyle(thickness:Number=null,

                                                         color:uint=0,

                                                         alpha:Number=1.0,

                                                         pixelHinting:Boolean=false,

                                                         scaleMode:String="normal",

                                                         caps:String=null,

                                                        joints:String=null,

                                                        miterLimit:Number=3):void


线条的绘制需要设定画笔粗细,线条末端端点类型,拐角的连接外观的类型等诸多参数。这些参数都影响线条绘制的最终结果。

经过试验,线条过细、线条过短也影响最终绘制效果。

在使用lineStyle函数绘制细小线段的时候,尤其需要注意。

下例绘制了宽度从1到3,长度从1到5的不同线段。

你会发现这些线段的一部分并非我们想象的效果。

这是什么原因造成的?我猜想是Flashplaer的色彩叠加算法造成的。

需要向高人请教!


package {
	import flash.display.CapsStyle;
	import flash.display.Graphics;
	import flash.display.LineScaleMode;
	import flash.display.Sprite;
	import flash.display.StageScaleMode;
	
	public class test1 extends Sprite {
		
		public function test1() {
			this.stage.scaleMode = StageScaleMode.NO_SCALE;
			
			drawLine(CapsStyle.NONE,50);
			drawLine(CapsStyle.ROUND,90);
			drawLine(CapsStyle.SQUARE,130);

		}
		
		private function drawLine(capsStyle:String,
								  y:Number):void {
			var g:Graphics = this.graphics;
			var i:int;
			var j:int;
			var x:Number = 10;
			
			//线条
			for(i=1;i<=3;i++){
				for(j=0;j<=5;j++){

					g.lineStyle(i,
						0,
						0.5,
						false,
						LineScaleMode.NONE,
						capsStyle);
					
					g.moveTo(x, y);
					g.lineTo(x, y+j);
						
					
					if(i>1){
						g.lineStyle(1,0);
						g.moveTo(x, y);
						g.lineTo(x, y+j);
					}
					
					g.endFill();
					x += 5;
				}
				
				x = 10;
				y +=10;
			}

			
			//矩形
//				for(i=1;i<=5;i++){
//					for(j=1;j<=5;j++){
//						g.beginFill(highlightColor);
//						g.drawRect(x + j*7, y,i,j);
//						g.endFill();
//					}
//					y +=10;
//				}
		}
	}
}

执行效果:

截取屏幕图像,然后用Firework发达16倍。

图1:drawLine(CapsStyle.NONE,50);

图2:drawLine(CapsStyle.ROUND,90);

图3:drawLine(CapsStyle.SQUARE,130);


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值