[英]Creating MXML components via an ActionScript loop in Flex
我正在使用Flash Builder 4.6为uni项目创建应用程序。 我有一个自定义Spark组件,我需要在运行时动态创建该组件的许多实例,具体取决于通过PHP脚本返回的XML元素的数量。
这可能有点令人困惑,所以让我编写以下步骤:1)应用程序将HTTPService请求发送到服务器上托管的PHP脚本。 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的函数),但无济于事。
提前感谢任何和所有建议/答案。 本杰明。
把这一行
var curMenuItem:menuItemContainer = new menuItemContainer();
在你的while循环中。 随着你的代码,因为它是你只创建一个实例menuItemContainer
然后不断变化的那一个属性menuItemContainer
在while循环。 相反,您需要在循环的每次迭代中创建一个新的不同的menuItemContainer
实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.