2013-02-07 88 views
0

我應該進一步描述這一點。 在我的AS3中,我目前正在從XML表格創建動態文本到文本框中。 我的代碼看起來像這樣來幫助形容這進一步:動態創建多個填充了XML數據的文本框

function XMLLoader(e:Event):void 
    { 
     xmlData = new XML(e.target.data); 
     ParseList(xmlData); 

    } 

    function ParseList(nameData:XML):void 
    { 
    var nameList:XMLList = nameData.Searchtext.Name; 
    for each (var nameElement:XML in nameList){ 
     directory_text.appendText(nameElement.text() + "\n"); 
    trace(nameElement.text()); 
    } 
    } 

我想使用相同類型的格式來做,創建輸出的每個項目的文本框(在這種情況下,名稱),這樣我可以使每個單獨的項目可點擊並添加一個功能。我希望能夠爲「每個人」做到這一點,但沒有一個明確的方式來做到這一點。

任何想法?我的AS3電話在所有列出的,這可以達到多達50+項目,所以我想動態地添加它。

在此先感謝!

+0

嘗試爲每個輸出製作一個Sprite並在每個輸出中插入一個TextField。 – David

回答

0

這是做你所問的一個簡單的例子。這增加了TextField在容器Sprite對象每名稱節點,然後添加一個事件偵聽到容器接住發生在容器上(和它的孩子。)

在事件偵聽器方法的任何點擊,它找出被點擊的TextField的哪個實例並跟蹤其內容。

您可能無法立即使用此代碼,但它顯示瞭如何完成這些操作的原理。

function parseList(nameData:XML):void { 
    var nameList:XMLList = nameData.Searchtext.Name; 

    var textContainer:Sprite = new Sprite(); 
    this.addChild(textContainer); 

    for each (var node:XML in nameList) { 
     var currTextField:TextField = new TextField(); 
     currTextField.text = node.text(); 
     currTextField.y = textContainer.height; //Place the textfield below any previous textfields 
     currTextField.height = 30; 
     currTextField.selectable = false; 
     textContainer.addChild(currTextField); 
    } 

    textContainer.addEventListener(MouseEvent.CLICK, onTextClick); 
} 

function onTextClick(e:MouseEvent):void { 
    if (e.target is TextField) { 
     var currTextField:TextField = e.target as TextField; 
     trace("This name was clicked:", currTextField.text); 
    } 
} 
+0

謝謝,我仍然通過這個工作,看到它肯定幫助我處理它。唷! –

+0

任何機會我可以使用每個currTextField的文本搜索我的XML表單?我試圖讓目錄可點擊,並且你創建的跟蹤工作,但現在我試圖添加一個函數來搜索同名的.xml文件(在這個例子中)來點亮地圖上的一個位置。我一直有問題。 –