我正在學習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