2012-03-29 15:05 Spark主题下调整Canvas的边框样式

在Halo主题下,可用borderThickness、borderSides等样式来精确控制边框,但在Spark主题下,默认是不支持的,没办法,只好自己扩展

1、自定义类

package {
import mx.containers.Canvas;

[Style(name = "borderThickness")]
[Style(name = "borderSides")]
public class CCanvas extends Canvas {
public function CCanvas() {
super();
}
}
}


2、自定义皮肤

package {
import flash.display.Graphics;

import mx.skins.halo.HaloBorder;


public class CHaloBorder extends HaloBorder {

override protected function updateDisplayList(w:Number, h:Number):void {
super.updateDisplayList(w, h);
var g:Graphics = graphics;
g.clear();
var borderColor:uint = this.getStyle("borderColor");
var borderThickness:int = this.getStyle('borderThickness');
g.beginFill(borderColor);
g.lineStyle(borderThickness, borderColor);
var borderSides:String = this.getStyle('borderSides');

if (borderSides.indexOf("left") != -1) {
g.moveTo(0, 0);
g.lineTo(0, h)
}
if (borderSides.indexOf("top") != -1) {
g.moveTo(0, 0);
g.lineTo(w, 0)
}

if (borderSides.indexOf("right") != -1) {
g.moveTo(w, 0);
g.lineTo(w, h)
}

if (borderSides.indexOf("bottom") != -1) {
g.moveTo(0, h);
g.lineTo(w, h)
}
g.endFill();
}
}
}
3、测试类

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:local="*">
<s:layout>
<s:BasicLayout/>
</s:layout>
<local:CCanvas x="50" y="50" id="canvas" width="300" height="300" borderThickness="1" borderSides="left top right bottom"
borderColor="blue" borderSkin="CHaloBorder"/>
</s:Application>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值