Hi Mike,

Thanks for your reply.

The class I created was based on a tutorial I found online (communitymx.com) a subscription-based site that I started a trial subscription to, but wasn't getting any response to my questions, so didn't see the point in paying money for.

Maybe extending MovieClip isn't ideal for this test - I don't know. I'm just trying to wrap my head around event handling using the EventDispatcher class.


-------------------------------------------------------
[EMAIL PROTECTED]
917-750-6398
AIM: dcardena
-------------------------------------------------------




On Apr 12, 2006, at 8:22 PM, Mike Anderson wrote:

If you are extending a MovieClip - doesn't the MovieClip already have
all those things "you are trying to recreate" at your disposal?

That is the whole point of extending a MovieClip - so you DON'T have to
go through all the stuff you are going through right now.

I am no guru at this stuff, but I write Class Files on a daily basis,
and I NEVER have to deal with stuff like this.  I create custom
listeners, and dispatch events on a regular basis - and it works just
beautifully.

It just seems like you are reinventing the wheel, and defeating the
whole purpose of why things were created this way in the first place.

This is just my initial reaction to what I've seen, and I am sure some
more experienced people will chime in on this thread.

Mike

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Daniel
Cardenas
Sent: Wednesday, April 12, 2006 7:10 PM
To: flashcoders@chattyfig.figleaf.com
Subject: [Flashcoders] Need help understanding EventDispatcher


Hi,

I'm trying to learn event handling using the EventDispatcher class and
am having a hard time getting a test to work. I'm also fairly new to
OOP, so I'm having a hard time finding the problem in my code.

I've created a simple "Ball" class that creates an empty MC and then
draws a circle in it. I've defined some event methods in the class and
contained them within a "declareEventMethods" method. I don't know if
that's the right way to do it or not - I modeled this test on various
tutorials I've found online, but it's not working.

What I'm trying to do is create a new instance of the "Ball" class
called "myBall", then notify an event handler of events dispatched by
myBall. The handler should then execute a trace command.

The "Ball" class assigns the name "testBall" to the MC it creates, and I
can trigger the event handler if I define a method directly on the MC
that's created, ie:
   testBall.onPress = function () {myEventHandler(testBall);}

but that's not what I'm trying to accomplish.

I've pasted the code below - any help would be greatly appreciated.

Thanks,

Daniel Cardenas


------------------------------------------------------
Ball Class
------------------------------------------------------

class Ball extends MovieClip {

   public var addEventListener:Function;
   public var removeEventListener:Function;
   private var dispatchEvent:Function;

   public function Ball () {
          // initialize EventDispatcher
          mx.events.EventDispatcher.initialize(this);

          // create a ball MC
          var aBall:MovieClip = _level0.createEmptyMovieClip('testBall',
getNextHighestDepth());
        
          // draw ball
          aBall._x = 100;
          aBall._y = 100;
          aBall.lineStyle(20, 0xff0000, 100);
          aBall.lineTo(0,.2);
   }

   public function declareEventMethods():Void {
          onMouseDown = function() {
                  dispatchEvent( {type: "mouseDown", target: this} );
          }
          onMouseUp = function() {
                  dispatchEvent( {type: "mouseUp", target: this} );
          }
          onPress = function() {
                  dispatchEvent( {type: "press", target: this} );
          }
          onRelease = function() {
                  dispatchEvent( {type: "release", target: this} );
          }
   }

}

------------------------------------------------------
Timeline Code
------------------------------------------------------

/* create object
----------------------------------*/
var myBall:Ball = new Ball();
myBall.declareEventMethods();

/* add listener
----------------------------------*/
myBall.addEventListener("mouseDown", myEventHandler);
myBall.addEventListener("mouseUp", myEventHandler);
myBall.addEventListener("press", myEventHandler);
myBall.addEventListener("release", myEventHandler);


/* define handler
----------------------------------*/
function myEventHandler(evt:Object):Void {
   trace('A ' + evt.type + ' event was dispatched by ' + evt.target); }

// this works - but it's not what I'm trying to do...
// testBall.onPress = function () {myEventHandler(testBall);}




-------------------------------------------------------
[EMAIL PROTECTED]
917-750-6398
AIM: dcardena
-------------------------------------------------------



_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training http://www.figleaf.com
http://training.figleaf.com
_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com


_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com

Reply via email to