私はFlexを学び、簡単なRPGを実践しようとしています。私はビューの状態を使用して画面を切り替える。今私は自分のキャラクター情報を表示するHomeView.mxml、インベントリーアイテムを表示するInventoryView.mxml、装備アイテムを示すEquipmentView.mxmlを持っています。それぞれにそれぞれのビューステートがあります。Flexでビューの状態が変化したときに関数を実行
私のメインのmxmlファイルでは、キャラクタのグローバル変数とゲーム内のアイテムのArrayCollectionを作成します。 Inventory and Equipmentの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は、私はそれはイメージ・コンポーネントを拡張し、唯一私は名前を取得することができます表示される項目に変数「項目」を設定し、タイプ(定義されたクラスでありますそして最終的に もequipGroupは、私はあなたが欲しいと考えているものを達成するために、いくつかの方法があります
updateCompleteは完璧です、ありがとうございました! 私はstateChangeCompleteを使用していましたが、正しい場所でそれを聞いていないため、動作しませんでした。 updateCompleteは私が必要とするものを正確にやっているようですが、私もショーを試みるつもりです – Aheinlein