0

私はTileListを持っています。これは、動的に生成されたxmlを返すPHPスクリプトをロードしたので、必要な画像とラベルを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をクリックしたアイテムからラベルを取得する方法がわかりません。

FlashCS5を使用しています。

4

2 に答える 2

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);
    }
}
于 2011-10-07T08:06:04.633 に答える
0

よくOK...

これは簡単で、昼寝の後、座ってこれを試してみたところ、私が望んでいたものが得られました。

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);

  }

}
于 2011-10-07T19:12:21.300 に答える