2016-11-18 9 views
2

Commandsと呼ばれるクラスを用意して、異なるキープレスや機能を追加して、ゲームの状態や変数を制御して迅速かつ簡単にゲームをテストできます。私はこれをしようとしているが、それは...このエラースローAS3 addEventListenerが私のカスタムクラスに認識されないメソッド

package gameTesting { 
    import flash.events.KeyboardEvent; 
    import flash.events.*; 
    import flash.ui.Keyboard; 
    import flash.display.*; 
    import flash.events.EventDispatcher; 

    public class Commands { 

     public function Commands() { 
      addEventListeners(); 
     } 

     public function addEventListeners():void{ 
      addEventListener(KeyboardEvent.KEY_DOWN,keyDown); 
     } 

     public function keyDown(ke:KeyboardEvent):void{ 
      trace("key pressed"); 
     } 

    } 

} 

働いていない:

:だから

C:...\Commands.as, Line 15, Column 4 1180: Call to a possibly undefined method addEventListener. 

を、私は私のクラスはEventDispatcherメソッドを継承何かを拡張した試してみました

//... 
    public class Commands extends DisplayObject{ 
// ... 

このクラスをインスタンス化しようとすると、このエラーがメインの.asファイルからスローされます。

ArgumentError: Error #2012: Commands$ class cannot be instantiated. 

また、lolsの周りにはstaticというキーワードを投げてみましたが、サイコロはありません。

私はここで何が欠けていますか?

ところで、私のこのようなことの理由は、このクラスをインスタンス化するコード行を単に削除するだけで、この機能を削除することができます(ユーザーが使用できないようにするためです)。私はそれがかなり気の利いたと思うが、これがasinineと思われるならば、ぜひとも話してください!

答えて

5

ステージにコマンドを渡すと、addEventListenerをステージに追加できます。

import flash.display.Stage; 

public class Commands { 

    public function Commands(stage:Stage) { 
     stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDown); 
    } 

    public function keyDown(ke:KeyboardEvent):void{ 
     trace("key pressed"); 
    } 

} 
+0

ありがとうございました。私はこれを試して、無関係な型ステージへの型Classの暗黙の強制を取得します。 (ああ、私はステージを最初に通過しようとしましたが、今は小文字のステージを通過するはずです)...私はこれが私を近づけると思います。私はつまずくままにしておきます。 –

+0

これはそれでした。私は何かを学んだ。ありがとう! –

+0

あなたは答えを丸めることができます: 'var com:Commands = new Commands(stage);'はメインの文書から呼び出すことができます。 –

関連する問題