【问题标题】:retrieve the label value from a TileList (Flash CS5 AS3)从 TileList (Flash CS5 AS3) 中检索标签值
【发布时间】:2011-10-07 02:26:39
【问题描述】:

我有一个 TileList,我加载了一个 PHP 脚本,该脚本返回一个动态生成的 xml,因此我可以加载 TileList 及其所需的图像和标签。

现在,我想单击 TileList 的一个项目并检索其标签,以便将其发送到另一个 PHP 脚本,该脚本使用标签的字符串进行搜索查询,以便将纬度和经度加载到地图到该项目所在的位置。

我一直在试图追踪它,但它没有成功。

var path:String = "http://localhost/entretenimiento.php";
var xmlLoader:URLLoader = new URLLoader();
xmlLoader.addEventListener(Event.COMPLETE, onLoadComplete);
xmlLoader.load(new URLRequest(path));       

function onLoadComplete(e:Event):void {
    System.disposeXML(xmlData);
    var xmlData:XML = new XML(e.target.data);
    //trace(xmlData);

    for (var i:int=0; i<xmlData.e_nombre.length(); i++)
    {
        myTileList.addItem({label:xmlData.e_nombre[i], source:xmlData.e_imagen[i]});
        //trace(xmlData.e_nombre[i]);
    }

    var display;
    myTileList.addEventListener(Event.CHANGE, listListener);
    myTileList.selectedIndex = 0;

    function listListener(event:Event):void {
    display.source = myTileList.selectedItem.label;
    trace(display.source);
    trace("working");

    }

}

我需要帮助,我不知道如何从 TileList 上单击的项目中检索标签。

我正在使用 Flash CS5。

【问题讨论】:

    标签: flash actionscript-3 label trace tilelist


    【解决方案1】:
    // this should live somewhere in your code:
    var path:String = "http://localhost/entretenimiento.php";
    var xmlLoader:URLLoader = new URLLoader();
        xmlLoader.addEventListener(Event.COMPLETE, onComplete);
        xmlLoader.load( new URLRequest( path ));
    
    private function onComplete(e:Event):void
    {
        // XML works just fine as a data provider, you don't need the loop.
        myTileList.dataProvider = new DataProvider(new XML(e.target.data));
        // You can assign which properties of the xml the list uses.
        myTileList.sourceField = "e_imagen";
        myTileList.labelField = "e_nombre"; 
        // I'm assuming that the goal is to have the user select an item, 
        //     so we'll register to listen for a click.
        myTileList.addEventListener( MouseEvent.CLICK, listListener );
    }
    
    private function listListener(e:Event):void
    {
        /* 
        Because we're listening for a click, and the listener is registered to the list
        make sure that what we've clicked is an item (a CellRenderer) and not the
        background or something.
        */
    
        if ( getDefinitionByName(getQualifiedClassName(e.target)) == CellRenderer )
        {
            // You can call your other web service from here.
            // The "target" is a CellRenderer, and its data is an XML node.
            trace(e.target.data.label);
        }
    }
    

    【讨论】:

    • 您好,感谢您的帮助...我不明白您的意思或它是如何工作的...您能更好地解释一下吗?再次感谢!
    • 为了清楚起见,我添加了更多周围的代码,并评论了所有内容以解释发生了什么。让我知道这是否有帮助,或者如果您需要我解释其他任何内容。
    • 您需要导入定义: import fl.controls.listClasses.CellRenderer;此外,您需要导入以下内容: import flash.utils.getDefinitionByName;导入 flash.utils.getQualifiedClassName;
    【解决方案2】:

    好吧,好吧……

    这很简单,小睡后我坐下来试了一下,它给了我想要的东西。

    var path:String = "http://localhost/entretenimiento.php";
    var xmlLoader:URLLoader = new URLLoader();
    xmlLoader.addEventListener(Event.COMPLETE, onLoadComplete);
    xmlLoader.load(new URLRequest(path));       
    
    function onLoadComplete(e:Event):void {
      System.disposeXML(xmlData);
      var xmlData:XML = new XML(e.target.data);
      //trace(xmlData);
    
      for (var i:int=0; i<xmlData.e_nombre.length(); i++)
      {
          myTileList.addItem({label:xmlData.e_nombre[i], source:xmlData.e_imagen[i]});
          //trace(xmlData.e_nombre[i]);
      }
    
      myTileList.addEventListener(Event.CHANGE, listListener);
      myTileList.selectedIndex = 0;
    
      function listListener(event:Event):void {
    
      trace(myTileList.selectedItem.label);
    
      }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2014-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-25
      • 2011-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多