我应该进一步描述这一点。 在我的AS3中,我目前正在从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 :(得分:0)
这是做你问的一个简单的例子。这会为容器TextField
对象中的每个 Name 节点添加Sprite
,然后向容器添加一个事件侦听器以捕获容器上发生的任何点击(&#&# 39;孩子们。)
在事件侦听器方法中,它会找出被点击的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);
}
}