Здравствуйте.
Подскажите, пожалуйста, как сделать autocomplete посредством as3, и, главное, не во флексе, нашёл только 1 достойный пример, и то он не подошёл(
Спасибо
autocomplete
- egor_pe4kin
- Сообщения: 5
- Зарегистрирован: 27 май 2010, 01:24
Re: autocomplete
проблема решена.
если нужно, вот исходник
если нужно, вот исходник
Код: Выделить всё
import fl.data.DataProvider;import fl.controls.ComboBox; var dp:DataProvider = new DataProvider();var i:Number;var xml_loader:URLLoader = new URLLoader(); var cb:ComboBox = new ComboBox();cb.editable=true;cb.addEventListener(Event.CHANGE, handleChange); xml_loader.load(new URLRequest("data.xml"));xml_loader.addEventListener(Event.COMPLETE, convertXMLToDataProvider); function convertXMLToDataProvider(e:Event):void { xml_loader.removeEventListener(Event.COMPLETE, convertXMLToDataProvider); var XMLData:XML=new XML(e.target.data); var XMLLength:Number=XMLData.children().length(); for (i = 0; i < XMLLength; i++) { dp.addItem({label :XMLData.item[i]}); } cb.dataProvider=dp; addChild(cb); //cb.prompt="123";} function handleChange(event:Event):void { if(cb.text.length < 1){ cb.dataProvider=dp; }else{ cb.prompt=cb.selectedLabel; cb.text=cb.prompt; var arr:Array=dp.toArray(); var filteredArr:Array=arr.filter(filterDataProvider); cb.dataProvider=new DataProvider(filteredArr); } if(cb.dataProvider.length > 0){ cb.open(); }else{ cb.close(); } } function filterDataProvider(obj:Object, idx:int, arr:Array):Boolean { var txt1:String=obj.label.toLowerCase(); var txt2:String=cb.text.toLowerCase(); if (txt1.search(txt2)!=-1) { return true; } return false;}