私はFlexを学び、練習用の簡単なRPGを作成しようとしています。画面を切り替えるためにビューステートを使用しています。現在、キャラクター情報を表示するHomeView.mxml、インベントリアイテムを表示するInventoryView.mxml、および装備アイテムを表示するEquipmentView.mxmlがあります。それぞれにそれぞれのビューステートがあります。
メインのmxmlファイルで、ゲーム内のキャラクターとアイテムのArrayCollectionのグローバル変数を作成します。在庫と機器のmxmlに2つのラベルを作成し、ラベルをクリックすると、currentState="EquipmentView"または"InventoryView"を設定するクリックハンドラーを呼び出します。
これが機能し、状態が変化し、それぞれのビューが正しく表示されます。
私の問題はEquipmentView状態にあります。初めて状態に入ると、機器の画像を表示し、クリックハンドラーを設定するcreationComplete関数があります。アイテムをクリックすると、アイテムが「装備解除」され、機器リストから削除され、画像が削除されます。これも問題なく機能しますが、インベントリビューに移動してアイテムを「装備」し、EquipmentViewに戻ると、画像が表示されません。私のequipmentList変数の長さをカウントするラベルがあり、ビューを切り替えたときに正確ですが、画像を再度表示することができません。
ビューが変更されたときに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
どんな助けでも素晴らしいでしょう、ありがとう