Ok, I looked at the generated AS3 code, which makes it clear. Thanks! I've using 4.0.18 for a long time now, and have to get back to using OL 4.7. ;-)
Thanks, Raju On Sun, May 9, 2010 at 12:02 AM, Henry Minsky <[email protected]>wrote: > Well it's a subclass of your original class, so all the instance vars will > be visible, and > you can call all the methods you expect. If you want to refer to the class > itself, you can > use subclassof operator or instanceof operator (or 'is' operator) > > > On Sat, May 8, 2010 at 5:51 AM, Raju Bitter < > [email protected]> wrote: > >> There's one question left: How do you map "this" within the anonymous >> class' method to the correct object based on the LZX code structure? >> >> On Fri, May 7, 2010 at 11:20 PM, Raju Bitter < >> [email protected]> wrote: >> >>> Thanks for the clarification, Henry. That makes sense. >>> >>> >>> On Fri, May 7, 2010 at 10:47 PM, Henry Minsky <[email protected]>wrote: >>> >>>> When we modified the compiler to generate Actionscript 3, we made it >>>> generate actual >>>> method declarations for handlers, both for efficiency and also so you >>>> can reference >>>> other instance vars in the "implicit this" scope of the instance. So if >>>> we're making method >>>> declarations, we need a class to put them in. If you define any methods >>>> in an instance, or >>>> define any constraints on it, it magically builds an anonymous class for >>>> your instance. >>>> >>>> This is defnitely an extra level of complexity for people if they look >>>> under the covers at what is being done, although in practice it's pretty >>>> much invisible to users. >>>> >>>> >>>> >>>> On Fri, May 7, 2010 at 4:16 PM, Raju Bitter < >>>> [email protected]> wrote: >>>> >>>>> Have a look at this code: >>>>> >>>>> <canvas width="100%" height="600" debug="true"> >>>>> >>>>> <class name="test1" extends="view"> >>>>> </class> >>>>> >>>>> <test1 x="100" y="100" width="100" height="100" bgcolor="#ff0000"> >>>>> <handler name="onclick" args="p"> >>>>> Debug.write(this); >>>>> Debug.write(parent); >>>>> </handler> >>>>> >>>>> <handler name="onclick" reference="b1" args="p"> >>>>> Debug.info("Event received by " + p); >>>>> Debug.write(this); >>>>> Debug.write(parent); >>>>> </handler> >>>>> </test1> >>>>> >>>>> <button id="b1" text="Click me" /> >>>>> >>>>> </canvas> >>>>> >>>>> When I click on the button, the onclick handler within test1 is called. >>>>> But "this" is an anonymous class extending test1. That's not very logical, >>>>> is it? I can imagine there was a good reason that you have to generate a >>>>> separate sprite object here, but it's very hard for programmers to >>>>> understand the underlying object structure. Is that the new way of dealing >>>>> with handlers? >>>>> >>>>> Thanks, >>>>> Raju >>>>> >>>>> >>>> >>>> >>>> -- >>>> Henry Minsky >>>> Software Architect >>>> [email protected] >>>> >>>> >>>> >>> >> > > > -- > Henry Minsky > Software Architect > [email protected] > > >
