получить значение метки из TileList (Flash CS5 AS3) - PullRequest
0 голосов
/ 07 октября 2011

У меня есть 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.

Ответы [ 2 ]

1 голос
/ 07 октября 2011
// 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);
    }
}
0 голосов
/ 07 октября 2011

Хорошо, хорошо ...

это было просто, после сна я просто сел и попробовал это, и это дало мне то, что я хотел.

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

  }

}
...