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

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

5.8.只允許List的某一項可被選中

2024-04-27 13:51:57
字體:
來源:轉載
供稿:網友
5.8.1問題
解析列表的dataProvider 以確保某些條目不能被用戶選擇
5.8.2解決方法
創建一個可以被設置在List 組件的一個子類的filterFunction 屬性, 使用mouseEventToItemRenderer 和finishKeySelection 通過filter 函數來檢查用戶的選擇并接受或不接受用戶的選擇.
5.8.3討論
為了控制用戶選擇列表中的某些條目,你需要控制這些條目,使用戶可使用鼠標和鍵盤來選擇,鼠標選擇相對來說更容易處理一些:若itemRenderer 包含你不想被選擇的數據則可以簡單地覆蓋mouseEventToItemRenderer 方法并返回null,鍵盤事件的處理更復雜是由于當用戶試圖使用up 或down 鍵經過不可選的條目,而你需要將列表中的下一個可選的條目發送給用戶。

為你的定制列表類中包含不可選條目的每一個實例來提供定制過濾,簡單地創建一個disabledFilterFunction 公有屬性,以便用戶可以傳遞一個值,創建成一個定制過濾,例如:
+展開
-ActionScript
public var disabledFilterFunction:Function;

覆蓋mouseEventToItemRenderer 方法的工作完成后的返回由MouseEvent 選中的itemRenderer, 而finishKeySelection 鍵盤選擇方法返回由keyboardEvent 選中的itemRenderer
+展開
-XML
<mx:List xmlns:mx="http://www.adobe.com/2006/mxmlwidth="400height="300">
<mx:Script>
<![CDATA[
import flash.events.MouseEvent;
import flash.ui.Keyboard;
import mx.controls.listClasses.IListItemRenderer;
import mx.controls.List;
public var disabledFilterFunction:Function;
private var selectionIsAbove:Boolean;
// we need to catch all mouse events that could change the index
override protected function mouseEventToItemRenderer(event:MouseEvent): IListItemRenderer{
var listItem:IListItemRenderer = super.mouseEventToItemRenderer(event);
if(listItem){
if(listItem.data){
if(disabledFilterFunction(listItem.data)){
return null;
}
}
}
return listItem;
}
//當鍵盤選擇事件結束后,下面捕獲的所有鍵盤事件可以改變索引:
override protected function finishKeySelection():void {
super.finishKeySelection();
var i:int;
var uid:String;
var rowCount:int = listItems.length;
var partialRow:int = (rowInfo[rowCount-1].y +rowInfo[rowCount-1].height > listContent.height) ? 1 : 0;
var item:IListItemRenderer = listItems[caretIndex -verticalScrollPosition][0];
if(item) {
if(item.data) {
if(disabledFilterFunction(item.data)){
//下面使用disabledFilterFunction 屬性來決定特定的條目是否允許被選中,若當前條目不允許被選中,代碼將定位到另一個可見的被激活的條目。
rowCount = rowCount - partialRow;
var currIndex:int = caretIndex -verticalScrollPosition;
if(selectionIsAbove){
// look up;
i = currIndex - 1;
while(i>0){
item = listItems[i][0];
if(!disabledFilterFunction(item.data)){
selectedIndex = i -verticalScrollPosition;
return ;
}
i--;
}
i = currIndex + 1
while(i<this.rowCount){
item = listItems[i][0];
if(!disabledFilterFunction(item.data)){
selectedIndex = i -verticalScrollPosition;
return;
}
i++;
}
else
{
// look down;
while(i<this.rowCount){
item = listItems[i][0];
if(!disabledFilterFunction(item.data)){
selectedIndex = i -verticalScrollPosition;
return;
}
i++;
}
while(i>0){
item = listItems[i][0];
if(!disabledFilterFunction(item.data)){
selectedIndex = i -verticalScrollPosition;
return;
}
i--;
}
}
}
}
}
}

]]>
</mx:Script>
</mx:List>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 岳阳县| 英德市| 买车| 沂源县| 华坪县| 武宣县| 新干县| 红原县| 平谷区| 芮城县| 上蔡县| 乌拉特后旗| 瑞昌市| 勐海县| 瑞金市| 凉城县| 布拖县| 金昌市| 临海市| 满城县| 随州市| 康乐县| 定南县| 赣州市| 方城县| 德格县| 出国| 顺义区| 华阴市| 交口县| 突泉县| 新营市| 绿春县| 牙克石市| 文水县| 余干县| 天等县| 金堂县| 桃园县| 本溪| 九江县|