Flex borderSkin繪自定義寬度邊框的實例
項目打印需要,要有邊框,而且要設置邊框的寬度。我們項目是用Twaver flex做的,經過查資料和嚐試,采用在Network的rootCanvas上繪製邊框。但Canvas的樣式有限,不能直接修改邊框寬度。經過一番嚐試,通過borderSkin樣式能達到我要的效果。由於在網上沒有找到類似的文章,所以自己記錄下,方便自己查閱,以及和大家分享討論下這個方法。
這是我自定義的BorderSkin樣式類CanvasBorderSkin.as,通過改寫updateDisplayList方法繪製自定義寬度的邊框。
package com.starit.util
{
import flash.display.Graphics;
import mx.skins.halo.HaloBorder;
public class CanvasBorderSkin extends HaloBorder
{
public function CanvasBorderSkin()
{
super();
}
override protected function updateDisplayList(w:Number, h:Number):void
{
super.updateDisplayList(w, h);
var g:Graphics = graphics;
g.clear();
var borderThickness:Number = ViewController.CANVAS_BORDER_SIZE;
//這個就是邊框的寬度,可以自己定義
var borderColor:uint = this.getStyle("borderColor");
g.beginFill(borderColor);
g.drawRect(0, 0, w, h);
g.drawRect(borderThickness, borderThickness,
w - 2 * borderThickness,
h - 2 * borderThickness);
g.endFill();
}
}
}再在相應的視圖裏設置下network的樣式: network.rootCanvas.setStyle("borderStyle", "solid");
network.rootCanvas.setStyle("borderColor", 0x000000);
network.rootCanvas.setStyle("borderSkin", CanvasBorderSkin);
就能達到我要的效果了。

最後更新:2017-04-02 06:51:59