Jump to content
GreenSock

Search In
  • More options...
Find results that contain...
Find results in...
cerulean

Event passed as parameter to TweenMax.delayedCall becomes 0?

Recommended Posts

I'm sure there's an error in my code, but when I do this ($event is a mouseEvent)

TweenMax.delayedCall(_gameClickDelay,showDetailScreen,[$event]);

when I get to showDetailScreen($event:MouseEvent)

private function showDetailScreen($event:MouseEvent):void {

$event.current is no longer the button on which I originally clicked, but instead Stage, the trace is:

 

$event.currentTarget = [object Stage]

 

and $event itself traces as "0".

trace("$event = " + $event);
TweenMax.delayedCall(0,function ($x:MouseEvent) {trace("delayed call? " + x)},[$event]);

yields

$event = [MouseEvent type="click" bubbles=true cancelable=false eventPhase=2 localX=49.72636795043945 localY=109.43730163574219 stageX=487.6 stageY=709.2 relatedObject=null ctrlKey=false altKey=false shiftKey=false buttonDown=false delta=0]
delayed call? 0

Share this post


Link to post
Share on other sites

In the first blurb of code, the $event.currentTarget is the stage because of the way bubbling works (Google it - that may take a little while to wrap your head around how bubbling works). At the time you got the event in your function to begin with, currentTarget was one thing, but then it changes as it goes up the chain, and you're using it in a delayedCall(), so by the time that runs, the currentTarget changed. One simple solution is to just use that in your params:

TweenMax.delayedCall(_gameClickDelay, showDetailScreen, [$event.currentTarget]);

And the second problem you ran into is that you referenced "x" in your trace instead of "$x" which is the parameter you were looking for in your function :) Just a typo. 

Share this post


Link to post
Share on other sites

Thanks — first, the second point, my typo, I can only say: doh!, and feel ashamed.

 

I thought I understood how bubbling works (having pored through Moock several times years ago) — events go from top to bottom in the display hierarchy and then back from bottom to top, and you can watch for them in one direction (I don't remember which) or both —

 

At this remove I confess I've gotten a little fuzzy.  

 

I'd always thought that 'currentTarget' is the one that was bound through the addEventListener — that is, if you did abc.addEventListener(Event.WHATEVER,functionario) the currentTarget of functionario would always be abc -- and that 'target' would vary depending on whether you were catching it at some phase in the bubbling, and all of this is dependent on the display hierarchy.  Do I have this backwards?  

 

But in any case, does the event itself change over time? I think that's what you're saying. That is, with bubbling, if I save an event, and test target (or currentTarget), the bubbling mechanism will actually change it in the event I've saved?  

 

In the end I had done exactly what you suggested, just grabbed the currentTarget -- worked fine, but I felt rather uneasy as I didn't know why this was happening — your explanation helped, so thatnks!; I hadn't thought of bubbling!  Although I'm apparently unclear about the details, as per above…

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

×