给显示对象加边框,能够有如下三种方法
1.根据相交路径的缠绕规则的奇偶规则法(使用奇偶缠绕规则时,任何相交路径都交替使用开放填充与闭合填充。若是使用同一填充绘制的两个正方形相交,则不会填充相交的区域。一般,相邻区域不会都填充或都不填充。)
画两个图形使一个图形包含另外一个图形,使包含在里面的图形区域不填充来造成一个挖空的边框spa
outline.graphics.beginFill(lineColor, lineAlpha); outline.graphics.drawRect(0, 0, vw, vh); outline.graphics.drawRect(thickness, thickness, vw - thickness*2, vh - thickness*2); outline.graphics.endFill();
2.利用发光滤镜,将滤镜的是否挖空的参数设为truecode
outline.filters=[new GlowFilter(lineColor,1,4,4,20,1,false,true)]; outline.graphics.beginFill(lineColor, lineAlpha); outline.graphics.drawRect(0, 0, vw, vh); outline.graphics.endFill();
3.利用混合模式的BlendMode.ERASE模式(使用ERASE时,其父容器的混合模式要设为BlendMode.LAYER)
例若有两个图形:outline1,outline2,两个图形添加到同一个父容器中,而后设置将要擦除的那个对象的混合模式为BlendMode.ERASE,
这样就能擦除重叠部分造成一个边框对象
outline.blendMode=BlendMode.LAYER; if(outline1==null){ outline1=new Shape(); } if(outline2==null){ outline2=new Shape(); outline2.blendMode=BlendMode.ERASE; } if(!outline.contains(outline1)){ outline.addChild(outline1); } if(!outline.contains(outline2)){ outline.addChild(outline2); } //draw outline1 outline1.graphics.beginFill(lineColor, lineAlpha); outline1.graphics.drawRect(0, 0, vw, vh); outline1.graphics.endFill(); //draw outline2 outline2.graphics.beginFill(lineColor, lineAlpha); outline2.graphics.drawRect(thickness, thickness, vw - thickness*2, vh - thickness*2); outline2.graphics.endFill();
这三种方法中第一种是最简单的,不过若是有一个不规则的形状或用lineStyle画线条时就不适用了。第三种则比较麻烦不过效果是最好的。
第二种方法发光滤镜适用性最强,不过我的感受发光看起来有点模糊看不清,这个能够经过调滤镜的属性值来调适合的值
blog