antman
antman

Reputation: 227

Why am I getting "undefined method" for an implemented IEventDispatcher Interface?

I have a strange situation where I can't see why the IEventDispatcher interface that I have implemented is not compiling and I'm getting Error: Call to a possibly undefined method addEventListener and Error: Call to a possibly undefined method removeEventListener.

There's a good chance I'm doing something incredibly dumb here I just don't know what it is...

Here are the methods in the Class that are throwing these errors (meaning the methods working on "view" in the body of the setTransformListner and "removeTransformListener":

public function setTransformListener(view:AbstractView):void
{
    view.addEventListener(CustomEvent.TRANSFORM, transform);
}

public function removeTransformListener(view:AbstractView):void
{
    view.removeEventListener(CustomEvent.TRANSFORM, transform);
}

private function transform(e:CustomEvent):void
{

}

Here is the Event Dispatcher Class...

package view 
{
    import flash.events.Event;
    import flash.events.EventDispatcher;
    import flash.events.IEventDispatcher;

    public class AbstractView implements IEventDispatcher
    {

        private var _dispatcher:EventDispatcher;

        public function AbstractView():void
        {
            _dispatcher = new EventDispatcher(this);
        }

        /* INTERFACE flash.events.IEventDispatcher */

        public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
        {
            _dispatcher.addEventListener(type, listener, useCapture, priority, useWeakReference);
        }

        public function dispatchEvent(evt:Event):Boolean
        {
            return _dispatcher.dispatchEvent(evt);
        }

        public function hasEventListener(type:String):Boolean
        {
            return _dispatcher.hasEventListener(type);
        }

        public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
        {
            _dispatcher.removeEventListener(type, listener, useCapture);
        }

        public function willTrigger(type:String):Boolean 
        {
            return _dispatcher.willTrigger(type);
        }

    }

}

Upvotes: 4

Views: 205

Answers (1)

Barış Uşaklı
Barış Uşaklı

Reputation: 13532

Wild guess, you package name is view and you are trying to call view.addEventListener, try changing the package name. Although the local var view should be used first.

Upvotes: 5

Related Questions