国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

9.16.編程實現狀態控件的皮膚

2024-04-27 13:52:08
字體:
來源:轉載
供稿:網友
9.16.1. 問題
你想編程實現皮膚,該皮膚能夠解決控件顯示不同狀態的問題。
9.16.2. 解決辦法
生成mx.skins.ProgrammaticSkin 的子類,然后利用updateDisplayList 方法依據name 屬性值更新其顯示內容。可以嵌入地利用skin 樣式屬性,或者利用setStyle 方法,再或者利用CSS 三種方法應用編程實現的自定義皮膚。
9.16.3. 討論
通常控件都有狀態或包含有狀態的子元素。將編程實現的皮膚做為樣式來顯示控件狀態與用其來顯示容器背景是一樣的原理:樣式屬性值用編程實現的皮膚類的名稱定義。控件皮膚視覺元素的更新與容器的更新不同,但是大多數控件基于一個狀態顯示其內容。

為狀態組件編程生成皮膚類的過程中,你生成ProgrammaticSkin 的一個子類同時重載保護類型的updateDisplayList 方法。在重載updateDisplayList 過程內,你能利用switch case 語句響應狀態名稱值。每個皮膚片段的name 屬性值與控件的樣式屬性是同一字符串值,而且嵌入地應用于你待處理的控件。

下面的例子編程生成能依據以下狀態更新顯示的皮膚,upSkin、overSkin、downSkin 和disabledSkin:
查看代碼:
+展開
-ActionScript
package oreilly.cookbook {
import flash.filters.BevelFilter;
import mx.skins.ProgrammaticSkin;
public class CustomButtonSkin extends
ProgrammaticSkin {
private var _measuredWidth:Number = 100;
private var _measuredHeight:Number = 100;
// override measuredWidth and measuredHeight sets default size.
override public function get measuredWidth():Number { return _measuredWidth; }
override public function get measuredHeight():Number { return _measuredHeight; }
// update display based on state phase name.
override protected function updateDisplayList( unscaledWidth:Number,unscaledHeight:Number ):void{
var backgroundAlpha:Number = 1.0;
var bevelAngle:Number = 45;
var backgroundColor:uint;
// assign property values based on state name
switch ( name ) {
case "upSkin":backgroundColor = 0xEEEEEE;break;
case "overSkin":backgroundColor = 0xDDDDDD;break;
case "downSkin":backgroundColor = 0xDDDDDD;bevelAngle = 245;break;
case "disabledSkin":backgroundColor = 0xFFFFFF;backgroundAlpha = 0.5;break;
}
// clear the display and redraw with values assigned in switch 
graphics.clear();
drawRoundRect( 0, 0, unscaledWidth, unscaledHeight,null, backgroundColor, backgroundAlpha );
// apply bevel filter
var bevel:BevelFilter = new BevelFilter(2, bevelAngle );
this.filters = [bevel];
}
}
}

若要應用編程實現的響應組件狀態階段的皮膚,你需將類名做為skin 樣式屬性值。下例利用CSS 在一個ClassReference 指令中提供CustomButtonSkin 類的完整合法的類名:
+展開
-XML
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxmllayout="vertical">
<mx:Style>
.customButton {
skin:ClassReference( "oreilly.cookbook.CustomButtonSkin" );
}

</mx:Style>
<mx:Button id="skinnedBtn"
styleName="customButton"
label="click me" />

<mx:Button label="toggle enabled"
click="{skinnedBtn.enabled = !skinnedBtn.enabled;}"/>

</mx:Application>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 弥渡县| 玛沁县| 邯郸县| 清镇市| 云和县| 新余市| 儋州市| 大悟县| 吉水县| 宝清县| 含山县| 泰顺县| 南汇区| 阜城县| 博兴县| 彩票| 子长县| 孟村| 鄂温| 凤台县| 临沧市| 铜鼓县| 河南省| 乌拉特中旗| 星座| 贺兰县| 遂平县| 阿勒泰市| 西和县| 延寿县| 铜鼓县| 遵义县| 丰县| 盐山县| 兰坪| 东台市| 尉犁县| 凤台县| 井研县| 佛学| 门头沟区|