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);