使用Actionscript 3.0从XML创建列表

时间:2012-11-21 19:45:13

标签: xml actionscript-3 list xml-parsing

这是我的XML http://pastie.org/5413932

基本上我想使用AS3中的列表组件在列表框中列出场地名称!没有任何运气,我已经做了很多尝试。

我已经在这里加载了XML等代码http://pastie.org/5413941 我尝试在一个功能中使用 list.addItem({label:myXML.venue.name}); ,该功能列出了场地的名称但由于某种原因我不能一个一个地选择它们运行swf,我只能选择第一个。

我是AS3的新手

提前致谢:)

1 个答案:

答案 0 :(得分:0)

您最近似乎已经问过这个xml一个问题 - 所以这次我们可以看到XML结构:

var venueNames:XMLList = myXML.venue.name;//here you have all name's nodes
if(venueNames && venueNames.length() > 0)
{
    for each (var name:XML in venueNames) 
    {
        trace(name);

        list.addItem({label:name.toString()});
    }
}

这是您在列表中的项目上注册点击的方式:

list.addEventListener(ListEvent.ITEM_CLICK, nameSelectedHandler, false, 0, true);

这是事件可能包含的内容:

[ListEvent type="itemClick" bubbles=false cancelable=true columnIndex=0 rowIndex=0 index=0 item=[object Object]]

该事件的item属性是通过addItem方法放置对象的内容,因为您可以看到还有index属性 - 您可以使用它来标识单击了哪个项目。然后,您可以从XML获取场地节点,如下所示:

myXml.venue[e.index];//where e is the ListEvent

你可以用一个函数包装它,而不是像在下面的例子中那样在其他地方使用它来点击提交按钮:

    protected function onSubmit(e:MouseEvent):void
    {
        if(list.selectedIndex != -1)
        {
            trace(findVenueByIndex(list.selectedIndex));
        }
        else
        {
            trace("Nothing selected");
        }
    }

    protected function findVenueByIndex(index:int = 0):XML
    {
        return myXML.venue[index];
    }

问候