カスタム イベントと一緒にパラメータを送信するための簡単な (または推奨される) 方法はありますか? それとも、2 つのクラス間で変数を渡すだけの方法ですか?
私のプログラムは、単純な Civ/Age of Empires のようなゲームで、建物をタイルに配置できます。これは次のように機能します。
- プレーヤーが HUD のアイコンをクリックすると、PLAYER クラスが受け取るイベントがディスパッチされます。
- PLAYER クラスは、どの建物が保持されているか (クリックされたか) によって値が変わります。
- プレーヤーがグリッド内のタイルをクリックして配置すると、PLAYER クラスが受け取るイベントが送出されます。
- PLAYER クラスは建物オブジェクトを作成し、それを PLAYER クラス内の配列に追加します。
コードをどのように機能させたいかの例:
icon.as
private function onMouseClick(e:MouseEvent = null):void {
var iconClickedEvent:Event = new Event("BUILDING_HELD", buildingType); // passes "buildingType" through the event somehow
stage.dispatchEvent(iconClickedEvent);
}
tile.as
private function onMouseClick(e:MouseEvent = null):void {
var buildingPlacedEvent:Event = new Event("BUILDING_PLACED", xRef, yRef);// passes "xRef" & "yRef", the tile's co-ordinate
stage.dispatchEvent(buildingPlacedEvent);
}
player.as
private function init(e:Event):void {
stage.addEventListener("BUILDING_HELD", buildingHeld(buildingType));
stage.addEventListener("BUILDING_PLACED", placeBuilding(xRef, yRef));
}
private function buildingHeld(building:int):void {
buildingType = building;
}
private function placeBuilding(xRef:int, yRef:int):void {
switch(buildingType){
case 1: // main base
MainBaseArray.push();
MainBaseArray[length-1] = new MainBase(xPos, yPos); // create new object with the references passed
break;
}
}