国产探花免费观看_亚洲丰满少妇自慰呻吟_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. 討論
通??丶加袪顟B或包含有狀態的子元素。將編程實現的皮膚做為樣式來顯示控件狀態與用其來顯示容器背景是一樣的原理:樣式屬性值用編程實現的皮膚類的名稱定義??丶つw視覺元素的更新與容器的更新不同,但是大多數控件基于一個狀態顯示其內容。

為狀態組件編程生成皮膚類的過程中,你生成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>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 营山县| 会昌县| 尼玛县| 扎兰屯市| 六盘水市| 施秉县| 泰顺县| 建湖县| 岳阳市| 寻甸| 巨野县| 德格县| 遂宁市| 温州市| 搜索| 兰溪市| 杭锦后旗| 临洮县| 兴安县| 右玉县| 时尚| 留坝县| 营山县| 奇台县| 阿拉善右旗| 天门市| 瑞丽市| 岳普湖县| 农安县| 嘉黎县| 科技| 天等县| 益阳市| 嘉禾县| 正镶白旗| 天水市| 临沧市| 洪雅县| 枣庄市| 东乡族自治县| 仪陇县|