我正在学习Flex并试图制作一个简单的RPG来练习。我正在使用视图状态在屏幕之间切换。现在我有一个显示我的角色信息的HomeView.mxml,显示我的库存项目的InventoryView.mxml,以及显示装备项目的EquipmentView.mxml。他们每个人都有自己的观点状态。当视图状态改变时运行一个函数Flex
在我的主要mxml文件中,我为游戏中的角色和物品的ArrayCollection创建了一个全局变量。它在mxml中为库存和设备创建了2个标签,当我点击标签时,它会调用一个设置currentState =“EquipmentView”或“InventoryView”的点击处理程序。
这个工作原理和状态发生变化,各个视图显示正确。
我的问题是在我的EquipmentView状态。当我第一次进入状态时,它有一个creationComplete功能,它为我的设备显示图像并设置点击处理程序。当我点击该项目时,它会“解开”它并将其从设备列表中删除并移除图像。这也可以正常工作,但是当我进入我的库存视图并“装备”一件物品并返回到EquipmentView时,图像不显示。我有一个标签,它可以计算我的设备列表变量的长度,当我切换视图时它是准确的,但我不能让图像再次显示。
当视图改变时,有没有办法调用我的displayEquippedItems()函数(它最初是在creationComplete上调用的)?
这里是我的功能:
protected function displayEquippedItems():void
{
Alert.show("Displaying Items");
for (var i:int = 0; i<c.equippedItems.length; i++)
{
var item:Item = c.equippedItems.getItemAt(i) as Item;
switch (item.type)
{
case 'Weapon':
var il:ItemImage = new ItemImage(item);
il.source = "../assets/sword.gif";
il.scaleX=.25;
il.scaleY=.25;
il.horizontalCenter=-80;
il.verticalCenter=-30;
il.addEventListener(MouseEvent.CLICK, equippedItemClicked);
equipGroup.addElement(il);
break;
default:
Alert.show("Didnt find a weapon");
break;
}
}
}
ItemImage是我定义的扩展图像组件,只设置一个变量“项目”,以它会显示这样我就可以得到名称的项目,键入一个类(并最终改变图像源) 还equipGroup只是我在MXML定义为持有设备项目
任何帮助将是巨大的一个群体,由于
updateComplete是完美的,当你的代码将只执行,太感谢你了! 我曾经使用stateChangeComplete,但无法让它工作,因为我没有在正确的地方听它。 updateComplete似乎正在做我所需要的,我也会尝试显示以及 – Aheinlein 2012-04-12 20:45:18