国产探花免费观看_亚洲丰满少妇自慰呻吟_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>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 潮安县| 晋江市| 淮安市| 大理市| 新安县| 慈利县| 嘉善县| 正宁县| 都匀市| 黄浦区| 泸州市| 陵川县| 东明县| 慈溪市| 深泽县| 马边| 迁安市| 安新县| 商水县| 高密市| 长垣县| 南漳县| 沿河| 哈尔滨市| 襄樊市| 陕西省| 长海县| 邹城市| 香港| 怀化市| 舟曲县| 高要市| 育儿| 莎车县| 商南县| 岳池县| 江陵县| 横山县| 新安县| 郴州市| 博罗县|