Neal Davis
Neal Davis

Reputation: 2008

AS3 addEventListener not a recognized method in my custom class

I want to have a Class called Commands that I can put different key presses and functions into that will control game states and variables for quick and easy game testing. I'm trying this, but it's not working...

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");
        }

    }

}

which throws this error:

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

So, I tried having my class extend something that inherits the EventDispatcher methods:

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

but I just get this error thrown from my main .as file when trying to instantiate this Class:

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

I also tried throwing the static keyword around just for lols, but no dice.

What am I missing here?

by the way, my reason for doing things this way is just so that I can remove this functionality (so users can't use it) by simply removing the line of code that instantiates this class. I think it's pretty nifty, but if this seems asinine, by all means speak up!

Upvotes: 2

Views: 87

Answers (1)

Pan
Pan

Reputation: 2101

Try to pass stage to Commands,so you can add addEventListener on stage.

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");
    }

}

Upvotes: 5

Related Questions