0

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

基本上我想使用 AS3 中的列表组件在列表框中列出场地名称!我对此进行了多次尝试,但没有任何运气。

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

我是 AS3 的新手

提前致谢 :)

4

1 回答 1

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];
    }

问候

于 2012-11-21T21:40:18.110 回答