Good point. We’ll have to create a mechanism that saves closures so you
don’t have to do it yourself.  Maybe Mike already did this once.

-Alex

On 7/14/15, 4:55 PM, "Josh Tynjala" <joshtynj...@gmail.com> wrote:

>Darn. Now I ran into the issue where removing an event listener doesn't
>work because goog.bind() returns a different function every time that it
>is
>called.
>
>Looks like I will need to go with my original workaround for now. I can
>put
>this in the constructor to make it work the way that I expect:
>
>this["simpleButton_mousedownHandler"] =
>this.simpleButton_mousedownHandler.bind(this);
>this.addEventListener("mousedown", this.simpleButton_mousedownHandler);
>
>Storing the function returned by bind() on the instance will give it
>precedence over the one from the prototype. It would be cool if I could
>make the emitter do that automatically for all functions on an instance of
>a class.
>
>- Josh
>
>
>On Tue, Jul 14, 2015 at 4:33 PM, Josh Tynjala <joshtynj...@gmail.com>
>wrote:
>
>> That worked! I thought I had tried that. I don't usually use "this."
>>when
>> adding event listeners in ActionScript. I guess I was thinking too much
>> about how it would be converted to JavaScript or something. I must have
>> thought it would help the compiler. Haha!
>>
>> - Josh
>>
>>
>> On Tue, Jul 14, 2015 at 4:11 PM, Alex Harui <aha...@adobe.com> wrote:
>>
>>> Bummer.
>>>
>>> Did you try:
>>>
>>>   this.addEventListener("mousedown", simpleButton_mousedownHandler);
>>>
>>> The “this.” might be creating a pattern that isn’t handled.  I’m sort
>>>of
>>> hoping Mike will finish his mother-in-law’s bathroom and find time to
>>> start in on some way to pass context so we don’t have to one-off these
>>> patterns.
>>>
>>> -Alex
>>>
>>> On 7/14/15, 3:50 PM, "Josh Tynjala" <joshtynj...@gmail.com> wrote:
>>>
>>> >Alex,
>>> >
>>> >The change you made worked for the case where the function is
>>>assigned to
>>> >a
>>> >variable, but it doesn't account for the function being passed as an
>>> >argument to a function.
>>> >
>>> >This still doesn't work for me:
>>> >
>>> >this.addEventListener("mousedown",
>>>this.simpleButton_mousedownHandler);
>>> >
>>> >However, as a workaround, I can do this, for now:
>>> >
>>> >var mouseDownListener:Function = this.simpleButton_mousedownHandler;
>>> >this.addEventListener("mousedown", mouseDownListener);
>>> >
>>> >- Josh
>>> >
>>> >On Sun, Jun 28, 2015 at 10:13 PM, Alex Harui <aha...@adobe.com> wrote:
>>> >
>>> >>
>>> >>
>>> >> On 6/28/15, 2:21 PM, "Michael Schmalle" <teotigraphix...@gmail.com>
>>> >>wrote:
>>> >>
>>> >> >On Sun, Jun 28, 2015 at 5:17 PM, Josh Tynjala
>>><joshtynj...@gmail.com>
>>> >> >wrote:
>>> >> >
>>> >> >> Yes, that is correct.
>>> >> >>
>>> >> >> In case it wasn't obvious, event listeners are the typical use
>>>case
>>> >> >>where
>>> >> >> you'd pass a reference to a member function somewhere else where
>>>a
>>> >> >> reference needs to be saved in a variable. AS3 made this easy by
>>> >> >> automatically binding member functions. JavaScript usually
>>>requires
>>> >>some
>>> >> >> manual intervention to get event listeners to be called with the
>>> >>right
>>> >> >> scope.
>>> >> >>
>>> >> >
>>> >> >Yeah the compiler does this already for anonymous functions, it
>>> >>creates a
>>> >> >self var pointing to 'this' and then uses self in the anonymous
>>> >>function's
>>> >> >body.
>>> >>
>>> >> Actually, that ‘self’ stuff is for AS lexical scoping.  Josh is more
>>> >> interested in the use of goog.bind for function identifiers.
>>>FalconJX
>>> >> handles that correctly in most cases for addEventListener and other
>>> >> callbacks, but I guess we don’t handle this scenario.
>>> >>
>>> >> I can try to take a look at it, but if you want to, search for
>>> >>GOOG_BIND.
>>> >>
>>> >> >
>>> >> >I wasn't aware of this problem though, can you create a JIRA
>>>ticket? I
>>> >> >probably will be the one that tackles it since I am sure Alex
>>>doesn't
>>> >>have
>>> >> >time to do something like this and test it as well.
>>> >>
>>> >> Well, I can probably get it working, but I’m sure I won’t test it as
>>> >>well
>>> >> as you will.
>>> >>
>>> >> -Alex
>>> >>
>>> >>
>>>
>>>
>>

Reply via email to