如何将 .as 中的array
值传递给 .mxml 代码的comboBox
?
我在 .mxml 代码中调用.as脚本。我有<mx:ComboBox>
,其数据数据提取器是来自同一 .as 文件的array
值。如何将其绑定到combobox
?
我的两个代码如下:
// ActionScript file
import flash.display.*;
import flash.events.*;
import flash.net.FileFilter;
import flash.net.FileReference;
import flash.net.FileReferenceList;
import mx.controls.Alert;
private var fr:FileReferenceList;
private var fls:Array;
private function folder():void
{
fr = new FileReferenceList();
fr.browse([new FileFilter("Zip Files", "*.zip")]);
fr.addEventListener(Event.SELECT, listZipFiles);
}
private function listZipFiles(e:Event):void
{
Alert.show("selectHandler: " + fr.fileList.length + " files");
var file:FileReference = new FileReference;
fls = new Array();
for (var i:uint = 0; i < fr.fileList.length; i++)
{
file = FileReference(fr.fileList[i]);
//Alert.show("File Name: " + fr.fileList[i]);
Alert.show("File Name: " + file.name);
fls.push(file);
}
Alert.show("fls: " + fls);
gotoCmboBx(fls);
}
private function gotoCmboBx(arr:Array):Array
{
}
private function getShpFiles(event:MouseEvent):void
{
}
和.mxml代码是:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script source="Asset/folder.as" />
<mx:Button x="10" y="10" label="My Button" width="122" height="31" id="myButton" click="folder()"/>
<mx:ComboBox x="10" y="49" id="cbobx" dataProvider="{fls}" ></mx:ComboBox>
</mx:Application>
答案 0 :(得分:0)
Array类是顶级对象,不实现绑定所需的IEventDispatcher。请尝试使用ArrayCollection。
更新:要向ArrayCollection添加项目,您可以使用addItem()方法,也可以使用ArrayCollection在属性中包含的Array的push()
方法source。但是,每当您对source
数组进行直接更改时,都需要调用refresh()方法。
myArr.source.push(myFileReference);
myArr.refresh();
首选addItem()
方法。
更新2: mx:ComboBox有一个属性labelField,用于确定dataProvider
中要使用的项目中的哪个字段。为了显示FileReference对象的name
,应该执行以下操作:
<mx:ComboBox dataProvider="{fls}" labelField="name"/>