我正在使用 Flash Builder 4.6 为 uni 项目创建应用程序。我有一个自定义 Spark 组件,我需要在运行时根据通过 PHP 脚本返回的 XML 元素的数量动态创建该组件的多个实例。
这可能有点令人困惑,所以让我编写以下步骤: 1) 应用程序向服务器上托管的 PHP 脚本发送 HTTPService 请求。2) PHP 访问 SQL 数据库并返回一系列 XML 数据。3) ActionScript 动态创建我的自定义 Flex 组件的 X 个实例,其中 X 是 XML 中的数据数。
这是我到目前为止的代码(不整洁,因为我试图让它工作):
动作脚本:
[Bindable]
public var holderArray:Array = new Array(100);
public function createMenu(e:MouseEvent):void {
var count:int = 0;
var curMenuItem:menuItemContainer = new menuItemContainer();
while (count < loadedMenu.length){
curMenuItem.itemName = loadedMenu.getItemAt(count).name;
curMenuItem.itemDesc = loadedMenu.getItemAt(count).description;
curMenuItem.itemPrice = numForm.format(loadedMenu.getItemAt(count).price);
curMenuItem.imageFile = loadedMenu.getItemAt(count).url;
//curMenuItem.y = count * 120
//menuItemGroup.addElement(curMenuItem);
holderArray[count] = curMenuItem;
count ++;
}
//testString = holderArray[1].itemName;
var count2:int = 0;
for each (var menuItem:menuItemContainer in holderArray){
menuItem.name = "menuItem" + count2;
menuItem.id = "menuItem" + count2;
//testString += menuItem.name;
menuItemGroup.addElement(menuItem);
count2++;
}
}
MXML:
<s:VGroup id="menuItemGroup" x="40" y="150">
</s:VGroup>
该代码似乎正在发生的事情是,我返回的三个 XML 数据中的每一个都在 menuItemContainer 的实例中使用,但是当每个都添加到 menuItemGroup 时,它会覆盖已经存在的那个。我不确定该项目是否真的被覆盖了,或者新项目是否只是位于较早的项目之上,但如果后者是真的,我找不到安排组件的方法。我尝试在循环中设置 menuItem.y(作为 count2 的函数),但无济于事。
提前感谢您提供的任何和所有建议/答案。本杰明。