在我的CSDN资源中有项目工程文件。下载导入工程即可看到效果,下面是地址。

http://download.csdn.net/detail/cym_lmy/6326053

MyCombBoxTree1.as

package com.cym
{
 import flash.events.MouseEvent;
 
 import flashx.textLayout.events.ScrollEvent;
 
 import mx.collections.IList;
 import mx.controls.Alert;
 import mx.controls.Tree;
 import mx.events.ListEvent;
 import mx.managers.PopUpManager;
 
 import spark.components.ComboBox;
 import spark.events.DropDownEvent;
 
 public class MyCombBoxTree1 extends ComboBox
 {
  private var _tree:Tree;
  private var __dataProvider:IList;
  private var _dropDownWidth:int;
  public var _dropDownHeight:int;
  public var xzqhbm:String;
  public var xzqhbmField:String;
  override protected function createChildren():void {
   addEventListener(DropDownEvent.OPEN, dropDownControllerOpenHandler);
   addEventListener(DropDownEvent.CLOSE, dropDownControllerCloseHandler);
   super.createChildren();
  }
  override public function set dataProvider(value:IList):void {
   __dataProvider = value;
  }
  private function dropDownControllerOpenHandler(event:DropDownEvent):void {
   if (!_tree) {
    _tree = new Tree();
   }
   _tree.dataProvider = __dataProvider;
   _tree.labelField = this.labelField;
   _tree.width = _dropDownWidth ? _dropDownWidth : this.width;
   _tree.height = _dropDownHeight ? _dropDownHeight : 150;
   popUpTree();
   StopLisentEventHandle();
  }
  
 public function dropDownControllerCloseHandler(event:DropDownEvent):void {
  if (this._tree) {
   PopUpManager.removePopUp(this._tree);
   this.textInput.text = this._tree.selectedItem ? this._tree.selectedItem[this._tree.labelField] : '';
   xzqhbm = this._tree.selectedItem ? this._tree.selectedItem[xzqhbmField] : '';
   var treeboxevent:TreecomboboxEvent = new TreecomboboxEvent(xzqhbm);
   this.dispatchEvent(treeboxevent);
   
  }
 }
 
 override protected function dropDownController_closeHandler(event:DropDownEvent):void
 {
  if(_tree.selectedItem){
   StartLisentEventHandle();
   super.dropDownController_closeHandler(event);
  }
 }
 
 /**
  * 定位弹出窗口
  *
  */
 private function popUpTree():void {
  this._tree.x = this.dropDownController.dropDown.x;
  this._tree.y = this.dropDownController.dropDown.y;
  PopUpManager.addPopUp(this._tree, this);
 }
 /**
  * 停止对事件流中当前节点中和所有后续节点中的事件侦听器进行处理。
  * */
 private function  StopLisentEventHandle():void {
  this.addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void {
   e.stopImmediatePropagation();
  });
  this.addEventListener(MouseEvent.MOUSE_DOWN, function(e:MouseEvent):void {
   e.stopImmediatePropagation();
  });
  this.addEventListener(MouseEvent.MOUSE_WHEEL, function(e:MouseEvent):void {
   e.stopImmediatePropagation();
  });
  _tree.addEventListener(MouseEvent.MOUSE_WHEEL, function(e:MouseEvent):void {
   e.stopImmediatePropagation();
  });
 }
 /**
  * 恢复对事件流中当前节点中和所有后续节点中的事件侦听器进行处理。
  * */
 private function  StartLisentEventHandle():void {
  this.removeEventListener(MouseEvent.CLICK, function(e:MouseEvent):void {
   e.stopImmediatePropagation();
  });
  this.removeEventListener(MouseEvent.MOUSE_DOWN, function(e:MouseEvent):void {
   e.stopImmediatePropagation();
  });
  this.removeEventListener(MouseEvent.MOUSE_WHEEL, function(e:MouseEvent):void {
   e.stopImmediatePropagation();
  });
  _tree.removeEventListener(MouseEvent.MOUSE_WHEEL, function(e:MouseEvent):void {
   e.stopImmediatePropagation();
  });
 }
 private function set dropDownHeight(value:int):void {
  this._dropDownHeight = value;
 }

public function MyCombBoxTree1()
  {
   super();
  }
 }
}

TreecomboboxEvent.as

package com.cym
{
 import flash.events.Event;
 
 public class TreecomboboxEvent extends Event
 {
  public static const NAME:String="treecomboboxevent";
  private var _data:Object;
  public function TreecomboboxEvent(data:Object=null)
  {
   super(NAME, false, false);
   this._data=data;
  }
  public function get data():Object
  {
   return _data;
  }
  
  public function set data(value:Object):void
  {
   _data = value;
  }
 }
}

测试

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
      xmlns:s="library://ns.adobe.com/flex/spark"
      xmlns:mx="library://ns.adobe.com/flex/mx"
      minWidth="955" minHeight="600"
      xmlns:cym="com.cym.*"
      creationComplete="loadXML()">
 <fx:Declarations>
  <!-- Place non-visual elements (e.g., services, value objects) here -->
 </fx:Declarations>
 <fx:Script>
  <![CDATA[
   import com.cym.TreecomboboxEvent;
   
   import mx.collections.ArrayCollection;
   import mx.collections.XMLListCollection;
   import mx.rpc.events.ResultEvent;
   import mx.rpc.http.HTTPService;
   public var xmlService:HTTPService = new HTTPService();
   [Bindable]
   public var xmlResult:XML;
   [Bindable]
   public var xmlList:XMLList;
   [Bindable]
   public var xmlTeams:XMLListCollection;
   public function loadXML():void
   {
    xmlService.url = "mlb.xml"                
    xmlService.resultFormat = "e4x";
    xmlService.addEventListener(ResultEvent.RESULT, resultHandler);
    xmlService.send();
   }
   
   public function resultHandler(event:ResultEvent):void
   {
    xmlResult = XML(event.result);
    xmlList = xmlResult.children();
    xmlTeams = new XMLListCollection(xmlList);
    cg.addEventListener(TreecomboboxEvent.NAME,ceshi);
   }
   public function ceshi(event:TreecomboboxEvent):void{
    haha.text=event.data.toString();
   }
  ]]>
 </fx:Script>
 <fx:Style>
  @namespace s "library://ns.adobe.com/flex/spark";
  @namespace mx "library://ns.adobe.com/flex/mx";
  @namespace cym "com.cym.*";
  mx|Tree{
   defaultLeafIcon:ClassReference(null);
   folderOpenIcon:ClassReference(null);
   folderClosedIcon:ClassReference(null);
  }
 </fx:Style>
 <mx:HBox>
  <cym:MyCombBoxTree1 id="cg" dataProvider="{xmlTeams}" labelField="@label" _dropDownHeight="200" xzqhbmField="@id"/>
  <s:TextInput id="haha"/>
 </mx:HBox>
</s:Application>

FlexComboBoxTree的更多相关文章

随机推荐

  1. javascript笔记5之流程控制语句

    /* var box = 100; //单行语句 var age = 20; //另一条单行语句 { //用花括号包含的语句集合,叫做复合语句,单位一个 //一对花括号,表示一个复合语句,处理时候,可 ...

  2. Ajax--xml格式及注意事项

    <?xml version='1.0' ?>//整个标签必须顶格写,version='1.0'是xml的版本号 <Info>//只能有且只有一个根作为最外层标签 <n1& ...

  3. BuguMongo是一个MongoDB Java开发框架,集成了DAO、Query、Lucene、GridFS等功能

    http://code.google.com/p/bugumongo/ 简介 BuguMongo是一个MongoDB Java开发框架,它的主要功能包括: 基于注解的对象-文档映射(Object-Do ...

  4. 至Webserver构造svgz的文件需要http头,让你的浏览器中打开svgz档

    IE8以及IE8不支持以下浏览器SVG的.svgz它是svg压缩文件格公式,本文介绍的配置独立的浏览器,但浏览svgz请IE9+要么Firefox,Chrome和其他现代的浏览器打开. 让我们以正确显 ...

  5. c++11: trailing return type in functions(函数返回类型后置)

    In C++03, the return type of a function template cannot be generalized if the return type relies on ...

  6. VMware SphereESXi上安装虚拟机

    VMware SphereESXi上安装虚拟机 创建新虚拟机 此处以CentOS为例 注意:配置上传的系统文件位置及启动项

  7. javascript构造函数+原形继承+作用域扩充

    目前为止我认为这是最佳的声明对象的模式,将今天学到的东西写下 <script type="text/javascript"> function Constructor( ...

  8. ASP.Net MVC与WebForm的区别

  9. Windows命令行(DOS命令)教程-5 (转载)http://arch.pconline.com.cn//pcedu/rookie/basic/10111/15325_4.html

    5. copy copy在英文中是复制的意思 [功能] 复制一个或一组文件到指定的磁盘或目录中 [格式] copy [C:][path][filename.ext] [C:][path]filenam ...

  10. photoSlider-html5原生js移动开发轮播图-相册滑动插件

    简单的移动端图片滑动切换浏览插件 分别引用css文件和js文件 如: <link rel="stylesheet" type="text/css" hre ...