0

基本的に、私は自分のプログラムにキーボード イベント リスナーをかろうじて追加してから、繰り返しビルドを開始しようとしています。問題は、複数のチュートリアルから派生した最も単純なものをそこに入れることでさえ、明らかに何か問題があるということです. 私は今何が欠けているのかよくわかりません。ものを追加したり、変更したり、削除したりしてみました。しかし、次のコードを考えると、画面にメッセージが表示されません。なんで?

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:local="*" xmlns:mx="http://www.adobe.com/2006/mxml" width="480" height="600" layout="absolute" creationComplete="onCreationComplete()">
<mx:Script>
    <![CDATA[
        import mx.controls.Alert;
        import flash.events.KeyboardEvent;

        private function onStart(pEvent:Event):void {
            vs.selectedChild = mm;
        }

        private function onNewGame(pEvent:Event):void {
            vs.selectedChild = game;
        }



        private function onCreationComplete():void {
            addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
            stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);

            addEventListener(KeyboardEvent.KEY_UP, onKeyDown);
            stage.addEventListener(KeyboardEvent.KEY_UP, onKeyDown);
        }

        private function onKeyDown(pEvent:KeyboardEvent):void {
            Alert.show("spam");
            Alert.show(pEvent.toString());
        }
    ]]>
</mx:Script>
<mx:ViewStack id="vs" creationComplete="vs.selectedChild = ts">
    <local:TitleScreen id="ts" creationComplete="ts.addEventListener(TitleScreen.START, onStart);" />
    <local:MainMenu id="mm" creationComplete="mm.addEventListener(MainMenu.NEW_GAME, onNewGame);" />
    <local:Game id="game" />
</mx:ViewStack>
</mx:Application>
4

1 に答える 1

1

stage直接使用することはできません。代わりに、次のコードを使用します。

    private function onCreationComplete():void {
        systemManager.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
        systemManager.stage.addEventListener(KeyboardEvent.KEY_UP, onKeyDown);
    }
于 2012-09-15T19:06:14.053 に答える