浏览:3282008-04-07 22:28   来自netlynx2000      :
按照下面的方式扩展combox,增加selectValue属性,就可以实现像html下拉列表框的效果,即:设定combox的selectvalue的值就可以改变combox的选择项
http://www.adobe.com/2006/mxml">

 






<?xml version="1.0" encoding="utf-8"?>
<mx:ComboBox xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Script>
      <![CDATA[
         private var _selectedValue:String;
         private var bSelectedValueSet:Boolean = false;
         private var bDataProviderSet:Boolean = false;

         // Override committ, this may be called repeatedly
         override protected function commitProperties():void
         {
            // invoke ComboBox version
            super.commitProperties();

            // If value set and have dataProvider
            if (bSelectedValueSet && bDataProviderSet)
            {
               // Set flag to false so code won't be called until selectedValue is set again
               bSelectedValueSet=false;
               // Loop through dataProvider
               for (var i:int=0;i<this.dataProvider.length;i++)
               {
                  // Get this item's data
                  var item:String = this.dataProvider[i].data;
  
                  // Check if is selectedValue
                  if(item == _selectedValue)
                  {
                     // Yes, set selectedIndex
                     this.selectedIndex = i;
                     break;
                  }
               }
            }
         }

         // Trap dataProvider being set
         override public function set dataProvider(o:Object):void
         {
            // invoke ComboBox version
            super.dataProvider = o;

            // This may get called before dataProvider is set, so make sure not null and has entries
            if (o!=null && o.length)
            {
               // Got it, set flag
               bDataProviderSet = true;
            }
         }

         // set for selectedValue
         public function set selectedValue(s:String):void
         {
            // Set flag
            bSelectedValueSet = true;
            // Save value
            _selectedValue = s;
            // Invalidate to force commit
            invalidateProperties();
         }
      ]]>
   </mx:Script>
</mx:ComboBox>

楼主

你还不是小组成员,加入小组以后才能发布新主题!
1 19659