绘制虚线方法有很多种,这几天看到一个另外一种方法,现在尝试一下来制作。过去绘制的方法都是采用间隔的方法来制作,现在利用一个小技巧可以通过位图来绘制。方法如下:
我们首先创建一个位图。然后进行填充。注意,填充的时候,并不是完全填充完的。其中的技巧就是在这里了。
var bmpData:BitmapData=new BitmapData(10,1,true,0x0);
bmpData.fillRect(new Rectangle(0,0,5,1),0xFF0000000);
位图的宽是10个像素,设置透明,而填充的时候,只是填充一半 。这样你看到的位图,其实有一半是填充了黑色,一半是没有被填充的。这样你看起来这个线就像被隔开一样,利用这种错觉来绘制一条虚线。效果也是非常好玩。
绘图Graphic 类里面有一个方法,是可以指定位图笔刷的:
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.display.Sprite;
var bmpData:BitmapData=new BitmapData(10,1,true,0x0);
bmpData.fillRect(new Rectangle(0,0,5,1),0xFF0000000);
var pen:Sprite=new Sprite();
addChild(pen);
pen.x=200;
pen.y=100;
pen.graphics.lineStyle(1);
pen.graphics.lineBitmapStyle(bmpData);//指定位图做笔刷
pen.graphics.moveTo(0,0);
pen.graphics.lineTo(200,0);
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.display.Sprite;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.display.Bitmap;
var bmpData:BitmapData=new BitmapData(10,1,true,0x0);
bmpData.fillRect(new Rectangle(0,0,5,1),0xFF0000000);
var pen:Sprite=new Sprite();
addChild(pen);
pen.x=200;
pen.y=100;
pen.graphics.lineStyle(1);
pen.graphics.lineBitmapStyle(bmpData);
pen.graphics.moveTo(0,0);
pen.graphics.lineTo(200,0);
var timer:Timer = new Timer(200);
timer.addEventListener(TimerEvent.TIMER,onTimer);
timer.start();
function onTimer(event:TimerEvent):void
{
var color:uint= bmpData.getPixel32(9,0);
bmpData.scroll(1, 0);
bmpData.setPixel32(0, 0, color);
}//利用位图移动的时候,一边复制像素一边移动
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.display.Sprite;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.display.Bitmap;
import flash.geom.Matrix;
var bmpData:BitmapData=new BitmapData(10,1,true,0x0);
bmpData.fillRect(new Rectangle(0,0,5,1),0xFF0000000);
var pen:Sprite=new Sprite();
addChild(pen);
pen.x=200;
pen.y=100;
pen.graphics.lineStyle(10);
pen.graphics.lineBitmapStyle(bmpData,new Matrix(0,-1,1));
pen.graphics.moveTo(0,0);
pen.graphics.lineTo(200,0);
var timer:Timer = new Timer(100);
timer.addEventListener(TimerEvent.TIMER,onTimer);
timer.start();
function onTimer(event:TimerEvent):void
{
var color:uint= bmpData.getPixel32(9,0);
bmpData.scroll(1, 0);
bmpData.setPixel32(0, 0, color);
}//利用位图移动的时候,一边复制像素一边移动