SandboxMouseEvent, FlexMouseEvent,Flex 多选 ComboBox

本文介绍如何使用自定义类工厂来创建一个具备多选功能的下拉框组件,并通过添加初始化事件监听器和属性来实现组件的自定义行为。实例展示了如何在Flex框架下构建一个灵活的、功能丰富的MyComboBox类。

说多了墨迹,直接帖代码

 

MyClassFactory 类 如下:

[java]  view plain copy
  1. import flash.display.DisplayObject;  
  2.   
  3. import mx.core.ClassFactory;  
  4. import mx.states.OverrideBase;  
  5.   
  6. public class MyClassFactory extends ClassFactory  
  7. {  
  8.     public function MyClassFactory(generator:Class=null)  
  9.     {  
  10.         super(generator);  
  11.     }  
  12.     private var eventArray:Array=new Array();  
  13.     private var _properties:Array=new Array();  
  14.     public function addInitEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0,useWeakReference:Boolean=false):void{  
  15.         eventArray.push({type:type,listener:listener,useCapture:useCapture,priority:priority,useWeakReference:useWeakReference});  
  16.     }  
  17.     public function addInitProperties(key:String,value:*):void{  
  18.         _properties.push({key:key,value:value});  
  19.     }  
  20.       
  21.     override public function newInstance():*{  
  22.         trace("MyClassFactory.newInstance();");  
  23.         var obj:*=super.newInstance();  
  24.         var event:Object;  
  25.         if(eventArray!=null&&eventArray.length>0&&obj as DisplayObject){  
  26.             var i:int=0;  
  27.             for(i=0;i<_properties.length;i++){  
  28.                 event=_properties[i];  
  29.                 if(event.value is Function){  
  30.                     obj[event.key]=event.value();  
  31.                 }else{  
  32.                     obj[event.key]=event.value;  
  33.                 }  
  34.                   
  35.             }  
  36.               
  37.             for(i=0;i<eventArray.length;i++){  
  38.                 event=eventArray[i];  
  39.                 DisplayObject(obj).addEventListener(event.type,event.listener,event.useCapture,event.priority,event.useWeakReference);  
  40.             }  
  41.         }  
  42.         return obj  
  43.     }  
  44.       
  45. }  

 

 

MyComboBox 类 如下:

 

[java]  view plain copy
  1. import flash.events.Event;  
  2. import flash.events.MouseEvent;  
  3. import mx.collections.ArrayCollection;  
  4. import mx.controls.ComboBox;  
  5. import mx.controls.List;  
  6. import mx.controls.listClasses.ListBase;  
  7. import mx.core.ClassFactory;  
  8. import mx.events.FlexEvent;  
  9. import mx.events.FlexMouseEvent;  
  10. import mx.events.ListEvent;  
  11. import mx.events.SandboxMouseEvent;  
  12.   
  13. public class MyComboBox extends ComboBox  
  14. {  
  15.     public function MyComboBox()  
  16.     {  
  17.         super();  
  18.         this.dropdownFactory=new MyClassFactory(List);  
  19.         this.getDropdownFactory().addInitEventListener(ListEvent.CHANGE,dropdown_Change,false,1);  
  20.         this.getDropdownFactory().addInitEventListener(MouseEvent.MOUSE_DOWN, dropdown_mouseDownHandler);  
  21.         this.getDropdownFactory().addInitEventListener(FlexMouseEvent.MOUSE_DOWN_OUTSIDE, dropdown_mouseOutsideHandler);  
  22.         this.getDropdownFactory().addInitEventListener(FlexMouseEvent.MOUSE_WHEEL_OUTSIDE, dropdown_mouseOutsideHandler);  
  23.         this.getDropdownFactory().addInitEventListener(SandboxMouseEvent.MOUSE_DOWN_SOMEWHERE, dropdown_mouseOutsideHandler);  
  24.         this.getDropdownFactory().addInitEventListener(SandboxMouseEvent.MOUSE_WHEEL_SOMEWHERE, dropdown_mouseOutsideHandler);  
  25.         this.getDropdownFactory().addInitProperties("allowMultipleSelection",true);  
  26.         this.getDropdownFactory().addInitProperties("selectedItems",getSelectedItems);  
  27.     }  
  28.   
  29.     private var _selectedItems:Array;  
  30.     private var _selectedIndices:Array;  
  31.     private var _separation:String=",";  
  32.     [Bindable("change")]  
  33.     [Bindable("valueCommit")]  
  34.     public function get selectedItems():Array{  
  35.         return  _selectedItems==null?[]:_selectedItems;  
  36.     }  
  37.     public function set selectedItems(array:Array):void{  
  38.         var t:String;  
  39.         this._selectedItems=array;  
  40.         this.text=selectedLabel;  
  41.     }  
  42.     [Bindable("change")]  
  43.     [Bindable("valueCommit")]  
  44.     public function get selectedIndices():Array{  
  45.         return _selectedIndices!=null?_selectedIndices:[];  
  46.     }  
  47.     public function set selectedIndices(array:Array):void{  
  48.         this._selectedIndices=array;  
  49.     }  
  50.     /** 
  51.      * Label 分隔符 
  52.      * */  
  53.     public function get separation():String{  
  54.         return this._separation;  
  55.     }  
  56.     public function set separation(value:String):void{  
  57.         this._separation=value;  
  58.     }  
  59.     public function getSelectedItems():Array{  
  60.         return this.selectedItems;  
  61.     }  
  62.     /** 
  63.      * 选中项时,Ctrl 是否按下 
  64.      * */  
  65.     private var ctrlKey:Boolean=false;  
  66.   
  67.     private function dropdown_Change(event:ListEvent):void{  
  68.         var listBase:ListBase=event.currentTarget as ListBase;  
  69.         this.selectedItems=listBase.selectedItems;  
  70.         this.selectedIndices=listBase.selectedIndices;  
  71.           
  72.         trace("dropdown_Change-----"+"selectedItems:"+selectedItems.length+"\t"+"selectedIndices:"+selectedIndices.length);  
  73.           
  74.     }  
  75.       
  76.     private function dropdown_mouseDownHandler(event:MouseEvent):void{  
  77.         ctrlKey=event.ctrlKey;  
  78.     }  
  79.     private function dropdown_mouseDownOutSide(event:FlexMouseEvent):void{  
  80.         close();  
  81.     }  
  82.       
  83.     override public function close(trigger:Event=null):void{  
  84.         if(!ctrlKey){  
  85.             super.close(trigger);//未按下 Ctrl 时 关闭  
  86.         }  
  87.     }  
  88.     override public function get selectedLabel():String  
  89.     {  
  90.         var array:Array=this.selectedItems;  
  91.         var result:String="";  
  92.         for(var i:int=0;i<array.length;i++){  
  93.             result+=itemToLabel(array[i]);  
  94.             if(i!=(array.length-1)){  
  95.                 result+=separation;  
  96.             }  
  97.         }  
  98.           
  99.         return result;  
  100.     }  
  101.     public function  getDropdownFactory():MyClassFactory{  
  102.         return super.dropdownFactory as MyClassFactory;  
  103.     }  
  104.     /** 
  105.      *  @private 
  106.      */  
  107.     private function dropdown_mouseOutsideHandler(event:Event):void  
  108.     {  
  109.         trace("selectedItems:"+selectedItems.length+"\t"+"selectedIndices:"+selectedIndices.length);  
  110.         if (event is MouseEvent)  
  111.         {  
  112.             var mouseEvent:MouseEvent = MouseEvent(event);  
  113.             if (!hitTestPoint(mouseEvent.stageX, mouseEvent.stageY, true))  
  114.             {  
  115.                 super.close(event);  
  116.             }  
  117.         }  
  118.         else if (event is SandboxMouseEvent)   
  119.         {  
  120.             super.close(event);  
  121.         }  
  122.     }  
  123. }  


调用代码 如下:

[html]  view plain copy
  1. <my:MyComboBox width="180">  
  2.     <my:dataProvider>  
  3.         <s:ArrayCollection>  
  4.             <fx:String>选项一</fx:String>  
  5.             <fx:String>选项二</fx:String>  
  6.             <fx:String>选项三</fx:String>  
  7.             <fx:String>选项四</fx:String>  
  8.             <fx:String>选项五</fx:String>  
  9.         </s:ArrayCollection>  
  10.     </my:dataProvider>  
  11. </my:MyComboBox>  


(按Ctrl 点击选择项 为多选)


转载:http://blog.youkuaiyun.com/hellofr/article/details/7026841




【SCI复现】含可再生能源与储能的区域微电网最优运行:应对不确定性的解鲁棒性与非预见性研究(Matlab代码实现)内容概要:本文围绕含可再生能源与储能的区域微电网最优运行展开研究,重点探讨应对不确定性的解鲁棒性与非预见性策略,通过Matlab代码实现SCI论文复现。研究涵盖阶段鲁棒调度模型、机会约束规划、需求响应机制及储能系统优化配置,结合风电、光伏等可再生能源出力的不确定性建模,提出兼顾系统经济性与鲁棒性的优化运行方案。文中详细展示了模型构建、算法设计(如C&CG算法、大M法)及仿真验证全过程,适用于微电网能量管理、电力系统优化调度等领域的科研与工程实践。; 适合人群:具备一定电力系统、优化理论和Matlab编程基础的研究生、科研人员及从事微电网、能源管理相关工作的工程技术人员。; 使用场景及目标:①复现SCI级微电网鲁棒优化研究成果,掌握应对风光负荷不确定性的建模与求解方法;②深入理解两阶段鲁棒优化、分布鲁棒优化、机会约束规划等先进优化方法在能源系统中的实际应用;③为撰写高水平学术论文或开展相关课题研究提供代码参考和技术支持。; 阅读建议:建议读者结合文档提供的Matlab代码逐模块学习,重点关注不确定性建模、鲁棒优化模型构建与求解流程,并尝试在不同场景下调试与扩展代码,以深化对微电网优化运行机制的理解。
个人防护装备实例分割数据集 一、基础信息 数据集名称:个人防护装备实例分割数据集 图片数量: 训练集:4,524张图片 分类类别: - Gloves(手套):工作人员佩戴的手部防护装备。 - Helmet(安全帽):头部防护装备。 - No-Gloves(未戴手套):未佩戴手部防护的状态。 - No-Helmet(未戴安全帽):未佩戴头部防护的状态。 - No-Shoes(未穿安全鞋):未佩戴足部防护的状态。 - No-Vest(未穿安全背心):未佩戴身体防护的状态。 - Shoes(安全鞋):足部防护装备。 - Vest(安全背心):身体防护装备。 标注格式:YOLO格式,包含实例分割的边形坐标和类别标签,适用于实例分割任务。 数据格式:来源于实际场景图像,适用于计算机视觉模型训练。 二、适用场景 工作场所安全监控系统开发:数据集支持实例分割任务,帮助构建能够自动识别工作人员个人防护装备穿戴状态的AI模型,提升工作环境安全性。 建筑与工业安全检查:集成至监控系统,实时检测PPE穿戴情况,预防安全事故,确保合规性。 学术研究与创新:支持计算机视觉在职业安全领域的应用研究,促进AI与安全工程的结合。 培训与教育:可用于安全培训课程,演示PPE识别技术,增强员工安全意识。 三、数据集优势 精准标注与样性:每个实例均用边形精确标注,确保分割边界准确;覆盖种PPE物品及未穿戴状态,增加模型鲁棒性。 场景丰富:数据来源于样环境,提升模型在不同场景下的泛化能力。 任务适配性强:标注兼容主流深度学习框架(如YOLO),可直接用于实例分割模型开发,支持目标检测和分割任务。 实用价值高:专注于工作场所安全,为自动化的PPE检测提供可靠数据支撑,有助于减少工伤事故。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值