flash绘图API:绘制一条虚线
发布时间:2020-12-15 06:30:56 所属栏目:百科 来源:网络整理
导读:? ? 绘制虚线方法有很多种,这几天看到一个另外一种方法,现在尝试一下来制作。过去绘制的方法都是采用间隔的方法来制作,现在利用一个小技巧可以通过位图来绘制。方法如下: ? ? ? ? 我们首先创建一个位图。然后进行填充。注意,填充的时候,并不是完全填充
? ? 绘制虚线方法有很多种,这几天看到一个另外一种方法,现在尝试一下来制作。过去绘制的方法都是采用间隔的方法来制作,现在利用一个小技巧可以通过位图来绘制。方法如下: ? ? ? ? 我们首先创建一个位图。然后进行填充。注意,填充的时候,并不是完全填充完的。其中的技巧就是在这里了。 ? ? ? ? ?var bmpData:BitmapData=new BitmapData(10,1,true,0x0); ? ? 位图的宽是10个像素,设置透明,而填充的时候,只是填充一半 。这样你看到的位图,其实有一半是填充了黑色,一半是没有被填充的。这样你看起来这个线就像被隔开一样,利用这种错觉来绘制一条虚线。效果也是非常好玩。? ? ?绘图Graphic 类里面有一个方法,是可以指定位图笔刷的:
lineBitmapStyle(bitmap:
BitmapData,matrix:
Matrix = null,repeat:
Boolean = true,smooth:
Boolean = false):
void
指定一个位图,用于绘制线条时的线条笔触。
有了这个方法之后,下面的事情就变得乐趣多了。
import flash.display.BitmapData; import flash.geom.Rectangle; import flash.display.Sprite; var bmpData:BitmapData=new BitmapData(10,0x0); bmpData.fillRect(new Rectangle(0,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);
? ?绘制一条虚线,并不能让我们觉得满足,因为利用这个位图其实可以制作其他的事情。
? ? (2)结合动画的形式,让线条动起来
? ? ?使用一种比较有趣的技巧,通过复制像素和移动位图结合产生了虚线滚动视角效果。
? 这个过程,利用位图scroll 方法,让图片进行一个像素移动,一边移动,一边进行复制,循环起来,产生视角错觉。这样虚线就想滚动一样了
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,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); 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,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,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); var timer:Timer = new Timer(100); timer.addEventListener(TimerEvent.TIMER,color); }//利用位图移动的时候,一边复制像素一边移动
? ?
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |