在flex里让LinkButton变成一个开关按钮(转载)

来自孤鸿的文章
[url]http://chengyun.iteye.com/blog/239404[/url]


2008-09-08
在flex里让LinkButton变成一个开关按钮

来自:http://blog.flexexamples.com/2008/09/06/creating-a-toggleable-linkbutton-control-in-flex/


其实flex里面的LinkButton有个toggle属性,把它设为true, 这个LinkButton就是一个开关按钮的。问题比较麻烦的是不仅要让这个LinkButton的行为,还要让它具有LinkButton的外观。比如这个LinkButton的selected=true时,它的外观应当像选中状态,比如显示一个蓝色矩形。反之,它的外观就像未选中状态,比如只显示文字。这是用户所期望的。
怎样改变LinkButton的外观呢?请看如下的代码:

skins/ToggleLinkButtonSkin.as
ToggleLinkButtonSkin类扩展了LinkButtonSkin类,在里面增加了几种状态。

Java代码
/**
* http://blog.flexexamples.com/2008/09/06/creating-a-toggleable-linkbutton-control-in-flex/
*/
package {
import mx.skins.halo.LinkButtonSkin;

public class ToggleLinkButtonSkin extends LinkButtonSkin {
public function ToggleLinkButtonSkin() {
super();
}

override protected function updateDisplayList(w:Number, h:Number):void {
super.updateDisplayList(w, h);

var cornerRadius:Number = getStyle("cornerRadius");
var rollOverColor:uint = getStyle("rollOverColor");
var selectionColor:uint = getStyle("selectionColor");

graphics.clear();

switch (name) {
case "upSkin":
// 画一个不可见矩形,作为用户的点击区域
drawRoundRect(
0, 0, w, h, cornerRadius,
0, 0);
break;
//增加了selectedUpSkin和selectedOverSkin两种状态,实际上和原来的overSkin一样
case "selectedUpSkin":
case "selectedOverSkin":
case "overSkin":
drawRoundRect(
0, 0, w, h, cornerRadius,
rollOverColor, 1);
break;
//增加了selectedDownSkin状态,实际上和原来的downSkin是一样的外观
case "selectedDownSkin":
case "downSkin":
drawRoundRect(
0, 0, w, h, cornerRadius,
selectionColor, 1);
break;
//增加了selectedDisabledSkin状态,实际上和原来的disabledSkin一样
case "selectedDisabledSkin":
case "disabledSkin":
// Draw invisible shape so we have a hit area.
drawRoundRect(
0, 0, w, h, cornerRadius,
0, 0);
break;
}
}
}
}
如何使用ToggleLinkButtonSkin呢?

main.mxml:

Java代码
<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/09/06/creating-a-toggleable-linkbutton-control-in-flex/ -->
<mx:Application name="LinkButton_toggle_test"
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
verticalAlign="middle"
backgroundColor="white">

<mx:ApplicationControlBar dock="true">
<mx:Form styleName="plain">
<mx:FormItem label="toggle:">
<mx:CheckBox id="toggleCheckBox" />
</mx:FormItem>
<mx:FormItem label="selected:">
<mx:CheckBox id="selectedCheckBox"
selected="{linkButton.selected}" />
</mx:FormItem>
</mx:Form>
</mx:ApplicationControlBar>

<mx:LinkButton id="linkButton"
label="LinkButton"
toggle="{toggleCheckBox.selected}"
selected="{selectedCheckBox.selected}"
skin="skins.ToggleLinkButtonSkin"
/>

</mx:Application>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值