AS3-对于数组中的每个元素,都传递具有不同参数的click事件

时间:2015-04-11 08:23:30

标签: arrays function actionscript-3 loops click

在动作脚本3中,我有一个整数对象数组,我将它作为数据提供者传递给TileList控件。我希望每个单击的数字都可以调用具有唯一参数的函数,因此对于列表中的每个图像,要调用的函数都有唯一的String参数值。如何在Action Script中实现这一目标?

对象数组如下:

private var nums:Array = [
    {label:"1"},
    {label:"2"},
    {label:"3"},
    {label:"5"},
    {label:"6"},
    {label:"7"}
];

TileList控件:

<mx:TileList >
    <mx:dataProvider>
        {nums}
    </mx:dataProvider>
</mx:TileList>

结果如下:

1 2 3 4
5 6 7 

对于每个点击的号码,我想用unqiue消息绑定下面的函数:

function alertMsg(var message:String){
    Alert.show(message);
}

传递的消息示例(点击1: Hello there | clicked 2: Wilkommen )等。

由于

2 个答案:

答案 0 :(得分:0)

将新参数添加到nums数组中的每个元素:

{label: "1", data:"Hello"},
{label: "2", data:"Wilkommen"}
...

TileList类具有selectedItem属性。 selectedItem是一个对象。因此很容易获得data变量的值。

tile_list.selectedItem.data

答案 1 :(得分:0)

使用'close'标记添加Combobox更改事件侦听器处理程序,并像您一样添加dataprovider标记laso。

<mx:ComboBox dataProvider="{nums}" close="getData(event);">         
</mx:ComboBox>

并使用附加参数

创建Arraycollection
[Bindable]
private var nums:ArrayCollection = new ArrayCollection( [
    {label:"1", data:"One"},
    {label:"2", data:"Two"},
    {label:"3", data:"Three"}   
]);

然后实现detData(event)函数,如下所示

private function getData(e:DropdownEvent):void{             
    Alert.show(e.currentTarget.selectedItem.data);
}