0

AS3でとてもシンプルなJRPGバトルシステムを作っています。戦闘イベントを表示する output というテキスト ボックスがあります。フォントが埋め込まれています(何十回もチェックしました)。黒地に白文字です。最初のテキストは表示されますが、その後は更新されません。何が起こっているのかを追跡するようにコードを設定しましたが、正しく表示されます。私は何を間違っていますか?ありがとう。

コードは次のとおりです (明らかに、これは完全ではありません)。

function BattleSystem():void
        {
            //add battle system event listeners
            stage.addEventListener(KeyboardEvent.KEY_DOWN,onKeyDown);
            stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);

            //initialize battle
            this.gotoAndStop(2);
            battleStart = true;
            playerAtks = false;
            output.text = ""
            output.text = "A dangerous " + _enemyName + " threatens to attack! What will you do? 1. Attack 2. Spells 3. Items ";


            function onKeyDown(event:KeyboardEvent):void
                {           

                    if (event.keyCode == Keyboard.NUMBER_1)
                    {
                        playerDmg = uint(_Str * ((Math.random() + 1)) - _enemyDef);
                    }
                }
            function onKeyUp(event:KeyboardEvent):void
            {
                if (event.keyCode == Keyboard.NUMBER_1)
                {
                    trace("You deal " + playerDmg + " damage to the " + _enemyName + "!")
                    output.text = "You deal " + playerDmg + " damage to the " + _enemyName + "!";
                }
            }
        }

たとえば、現在戦闘に参加すると、「危険なスライムが攻撃を脅かしています! どうしますか? 1. 攻撃 2. 呪文 3. アイテム」と表示されます。しかし、1 を打っても出力は変化しません。

4

1 に答える 1

0

関数にカプセル化されたイベント ハンドラーがありますが、これは正しくありません。

これを試して :

function BattleSystem():void
{
     //add battle system event listeners
     stage.addEventListener(KeyboardEvent.KEY_DOWN,onKeyDown);
     stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);

     //initialize battle
     this.gotoAndStop(2);
     battleStart = true;
     playerAtks = false;
     output.text = ""
     output.text = "A dangerous " + _enemyName + " threatens to attack! What will you do? 1. Attack 2. Spells 3. Items ";

}

function onKeyDown(event:KeyboardEvent):void
{           

      if (event.keyCode == Keyboard.NUMBER_1)
      {
          playerDmg = uint(_Str * ((Math.random() + 1)) - _enemyDef);
      }
}

function onKeyUp(event:KeyboardEvent):void
{
    if (event.keyCode == Keyboard.NUMBER_1)
    {
         trace("You deal " + playerDmg + " damage to the " + _enemyName + "!")
         output.text = "You deal " + playerDmg + " damage to the " + _enemyName + "!";
     }
}
于 2013-04-20T17:32:22.457 に答える