iLeichun

当前位置: 首页 > 个人日志

AS3绘制空心图形的几种方法

分类:个人日志   来源:原创   时间:2015-03-22 22:07:56
本文以矩形为例进行说明,以下方法都可以生成一个尺寸是50*50,边框宽度为2的红色空心矩形,代码比较相似。
方法一、
var stamp:BSprite = new BSprite();
stamp.graphics.beginFill(0xff0000, 1);
stamp.graphics.drawRect(0, 0, 5050);
stamp.graphics.drawRect(224646);
stamp.graphics.endFill();
这种方法绘制的矩形外围边框有像素,里面是透明的但无像素,因此里面无法感知鼠标事件。
 
方法二、
var stamp:BSprite = new BSprite();
stamp.graphics.beginFill(0xff0000, 0); //填充里面的像素,填充范围为边框所圈起来的部分,去掉本行则里面无像素填充
stamp.graphics.lineStyle(2, 0xff0000, 1, true);
stamp.graphics.drawRect(0, 0, 4848); //由于边框设置为2,此处应该减去
stamp.graphics.endFill();
这种方法绘制的矩形外围边框有像素,里面是透明的但也有像素(第二行存在时),因此里面可以感知鼠标事件。使用本方法由于设置了边框为2,所以绘制的时候要减去2才能绘制出50*50的图形。
 
方法三、
var stamp:BSprite = new BSprite();
stamp.graphics.beginFill(0xff0000, 0); //填充里面的像素,填充范围为边框所圈起来的部分,去掉本行则里面无像素填充
stamp.graphics.lineStyle(2, 0xff0000, 1, true);
stamp.graphics.moveTo(0, 0);
stamp.graphics.lineTo(48, 0); //由于边框设置为2,此处应该减去
stamp.graphics.lineTo(48, 48);
stamp.graphics.lineTo(0, 48); //绘制到此处时会自动连接到起始点形成封闭图形,剩余一条线可省去,但前提是第2行存在的情况下,否则不会自动封闭图形
stamp.graphics.endFill();
这种方法绘制的矩形外围边框有像素,里面是透明的但也有像素(第二行存在时),因此里面可以感知鼠标事件。使用本方法由于设置了边框为2,所以绘制的时候要减去2才能绘制出50*50的图形。使用线条绘制,优点是灵活,可以绘制出各种图形,缺点是代码量比较大,但对于api里面没有提供绘制方法的图形这是很好的方法。
更多