2011-10-07 6 views
0

필자는 TileList를 가지고 있는데,이 이미지는 내가 필요로하는 이미지와 레이블로 TileList를로드 할 수 있도록 dinamically generated xml을 제공하는 PHP 스크립트로로드됩니다.TileList에서 레이블 값 검색 (Flash CS5 AS3)

이제 TileList의 항목을 클릭하여 레이블을 가져 와서 Label의 문자열을 사용하는 다른 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를 사용하고 있습니다.

답변

0

좋아, 음 ...

내가 그냥 앉아서이 시도 낮잠 후, 간단하고 내가 원하는 것을 준.

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

    } 

} 
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); 
    } 
} 
+0

안녕하세요, 도움 주셔서 감사합니다 ... 나는 당신이 의미하는 바를 이해하지 못하거나 작동하는 방법을 알지 못합니다 ... 더 잘 설명 할 수 있습니까? 다시 한 번 감사드립니다! – Saul

+0

나는 명확성을 위해 주변 코드를 더 추가했으며, 진행 상황을 설명하기 위해 모든 것을 주석 처리했습니다. 도움이되는지 또는 다른 설명이 필요한 경우 알려주십시오. –

+0

오류가 발생했습니다. 정의되지 않은 속성 CellRenderer에 액세스 – Saul

관련 문제