我正在学习 Flex 并尝试制作一个简单的 RPG 来练习。我正在使用视图状态在屏幕之间切换。现在我有一个 HomeView.mxml 显示我的角色信息,InventoryView.mxml 显示我的库存物品,以及 EquipmentView.mxml 显示装备物品。他们每个人都有各自的视图状态。
在我的主 mxml 文件中,我为角色创建了一个全局变量,并为游戏中的项目创建了一个 ArrayCollection。它在 mxml 中为 Inventory 和 Equipment 创建 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 是我定义的一个类,它扩展了 Image 组件,并且只为它显示的 Item 设置了一个变量“item”,这样我就可以获得名称、类型(并最终更改图像源) 此外,equipGroup 只是我在其中定义的一个组用于保存设备项目的 mxml
任何帮助都会很棒,谢谢