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 >> >> >> >> >> >> >