給顯示對象加邊框,能夠有如下三種方法
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