说多了墨迹,直接帖代码
?
MyClassFactory 类 如下:
- import?flash.display.DisplayObject;??
- ??
- import?mx.core.ClassFactory;??
- import?mx.states.OverrideBase;??
- ??
- public?class?MyClassFactory?extends?ClassFactory??
- {??
- ????public?function?MyClassFactory(generator:Class=null)??
- ????{??
- ????????super(generator);??
- ????}??
- private?var?eventArray:Array=new?Array();??
- ????private?var?_properties:Array=new?Array();??
- public?function?addInitEventListener(type:String,?listener:Function,?useCapture:Boolean=false,?priority:int=0,useWeakReference:Boolean=false):void{??
- ????????eventArray.push({type:type,listener:listener,useCapture:useCapture,priority:priority,useWeakReference:useWeakReference});??
- ????}??
- public?function?addInitProperties(key:String,value:*):void{??
- ????????_properties.push({key:key,value:value});??
- ??????
- ????override?public?function?newInstance():*{??
- ????????trace("MyClassFactory.newInstance();");??
- ????????var?obj:*=super.newInstance();??
- ????????var?event:Object;??
- ????????if(eventArray!=null&&eventArray.length>0&&obj?as?DisplayObject){??
- ????????????var?i:0;??
- ????????????for(i=0;i<_properties.length;i++){??
- ????????????????event=_properties[i];??
- ????????????????if(event.value?is?Function){??
- ????????????????????obj[event.key]=event.value();??
- ????????????????}else{??
- ????????????????????obj[event.key]=event.value;??
- ????????????????}??
- ??????????????????
- ????????????}??
- ??????????????
- 0;i<eventArray.length;i++){??
- ????????????????event=eventArray[i];??
- ????????????????DisplayObject(obj).addEventListener(event.type,event.listener,event.useCapture,event.priority,event.useWeakReference);??
- ????????????}??
- ????????}??
- return?obj??
- }??
?
?
MyComboBox 类 如下:
?
import?flash.events.Event;??
- import?flash.events.MouseEvent;??
- import?mx.collections.ArrayCollection;??
- import?mx.controls.ComboBox;??
- import?mx.controls.List;??
- import?mx.controls.listClasses.ListBase;??
- import?mx.events.FlexEvent;??
- import?mx.events.FlexMouseEvent;??
- import?mx.events.ListEvent;??
- import?mx.events.SandboxMouseEvent;??
- class?MyComboBox?extends?ComboBox??
- {??
- public?function?MyComboBox()??
- ????{??
- super();??
- this.dropdownFactory=new?MyClassFactory(List);??
- this.getDropdownFactory().addInitEventListener(ListEvent.CHANGE,dropdown_Change,1);??
- this.getDropdownFactory().addInitEventListener(MouseEvent.MOUSE_DOWN,?dropdown_mouseDownHandler);??
- this.getDropdownFactory().addInitEventListener(FlexMouseEvent.MOUSE_DOWN_OUTSIDE,?dropdown_mouSEOutsideHandler);??
- this.getDropdownFactory().addInitEventListener(FlexMouseEvent.MOUSE_WHEEL_OUTSIDE,?dropdown_mouSEOutsideHandler);??
- this.getDropdownFactory().addInitEventListener(SandboxMouseEvent.MOUSE_DOWN_SOMEWHERE,153); background-color:inherit; font-weight:bold">this.getDropdownFactory().addInitEventListener(SandboxMouseEvent.MOUSE_WHEEL_SOMEWHERE,153); background-color:inherit; font-weight:bold">this.getDropdownFactory().addInitProperties("allowMultipleSelection",153); background-color:inherit; font-weight:bold">true);??
- this.getDropdownFactory().addInitProperties("selectedItems",getSelectedItems);??
- private?var?_selectedItems:Array;??
- private?var?_selectedIndices:Array;??
- private?var?_separation:String=",";??
- ????[Bindable("change")]??
- ????[Bindable("valueCommit")]??
- public?function?get?selectedItems():Array{??
- return??_selectedItems==null?[]:_selectedItems;??
- public?function?set?selectedItems(array:Array): ????????var?t:String;??
- this._selectedItems=array;??
- this.text=selectedLabel;??
- public?function?get?selectedIndices():Array{??
- return?_selectedIndices!=null?_selectedIndices:[];??
- public?function?set?selectedIndices(array:Array):this._selectedIndices=array;??
- ?????
- ?
- ??
- public?function?get?separation():String{??
- return?this._separation;??
- public?function?set?separation(value:String):this._separation=value;??
- public?function?getSelectedItems():Array{??
- this.selectedItems;??
- ?????*?选中项时,Ctrl?是否按下?
- private?var?ctrlKey:Boolean=false;??
- private?function?dropdown_Change(event:ListEvent): ????????var?listBase:ListBase=event.currentTarget?as?ListBase;??
- this.selectedItems=listBase.selectedItems;??
- this.selectedIndices=listBase.selectedIndices;??
- ??????????
- ????????trace("dropdown_Change-----"+"selectedItems:"+selectedItems.length+"t"+"selectedIndices:"+selectedIndices.length);??
- ??????
- private?function?dropdown_mouseDownHandler(event:MouseEvent): ????????ctrlKey=event.ctrlKey;??
- private?function?dropdown_mouseDownOutSide(event:FlexMouseEvent): ????????close();??
- public?function?close(trigger:Event=null):if(!ctrlKey){??
- super.close(trigger);??
- ????????}??
- ????override?public?function?get?selectedLabel():String??
- ????????var?array:Array= ????????var?result:String="";??
- for(var?i:0;i<array.length;i++){??
- ????????????result+=itemToLabel(array[i]);??
- ????????????if(i!=(array.length-1)){??
- ????????????????result+=separation;??
- ??????????
- return?result;??
- public?function??getDropdownFactory():MyClassFactory{??
- super.dropdownFactory?as?MyClassFactory;??
- ?????*??@private?
- ?????*/??
- private?function?dropdown_mouSEOutsideHandler(event:Event):void??
- ????????trace("selectedItems:"+selectedItems.length+"t"+"selectedIndices:"+selectedIndices.length);??
- if?(event?is?MouseEvent)??
- ????????{??
- ????????????var?mouseEvent:MouseEvent?=?MouseEvent(event);??
- if?(!hitTestPoint(mouseEvent.stageX,?mouseEvent.stageY,?true))??
- ????????????{??
- super.close(event);??
- else?if?(event?is?SandboxMouseEvent)???
- super.close(event);??
- }??
调用代码 如下:
<my:MyComboBox?width="180">??
- ????my:dataProvider>??
- ????????s:ArrayCollection ????????????fx:String>选项一</ ????????????>选项二>选项三>选项四>选项五my:MyComboBox>??
(按Ctrl 点击选择项 为多选)
转载:http://www.voidcn.com/article/p-fdlfofxw-zz.html
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|