Oh bummer. So its a player bug. That is going to be harder to track down, and to work around...
On 2006-06-16, at 09:31 EDT, Sarah Allen wrote: > > Reported as bug: > http://www.openlaszlo.org/jira/browse/LPP-2197 > > I was using the swf7 default and saw the bug in Flash Player 7 not > in Flash Player 8 > No change in behavior for swf6. I didn't test swf8. > > Sarah > > On Thu, Jun 15, 2006 at 8:21 PM, P T Withington wrote: > >> Closures are supposed to work. I believe they work in AS as of >> swf6. But our compiler plays several tricks a) to implement >> implicit this, b) to work around a Flash but in function >> contexts, and c) to implement our 'implicit this' rules. It is >> entirely possible you have unearthed a bug here. Please report. >> >> Could you clarify what target you are compiling for? Always swf7 >> but running on the 7 vs. 8 player? Or are you compiling for >> different targets? >> >> As to the comment that you cannot close over `this`, that is a >> canard. `this` is an implicitly defined local, defined >> automatically in every function (just as `arguments` is). So it >> is not that you cannot close over it, it's just that every >> function will automatically shadow its parent's `this` and >> `arguments`. If an inner function needs to refer to either of >> those bindings in its parent, the parent needs to create an alias >> that will not be shadowed. >> >> On 2006-06-15, at 19:57 EDT, Sarah Allen wrote: >> >>> >>> So, that differed from Flash Player 7 to Flash Player 8? >>> Is there any way we could smooth out that difference in the >>> compiler? >>> >>> On Thu, Jun 15, 2006 at 4:45 PM, Adam Wolff wrote: >>> >>>> it's the behavior of closures. to make this compatible, you >>>> could add >>>> a >>>> property to the function, and then retrive it using >>>> arguments.callee >>>> >>>> this._nc.onStatus = function(info) { >>>> _root.Debug.write('onStatus ', info.code); >>>> _root.Debug.write('this ', >>>> arguments.callee.originalthis >>>> ); >>>> } >>>> >>>> this._nc.onStatus.originalthis = this; >>>> >>>> >>>> A >>>> >>>> On Jun 15, Sarah Allen wrote: >>>> >>>>> >>>>> You are so right. It's a Flash Player 7 vs. Flash Player 8 issue, >>>>> consistent >>>>> across Mac & Windows. >>>>> I'm still puzzled though. The NetConnection object was >>>>> introduced in >>>>> Flash >>>>> Player 6. >>>>> >>>>> >>>>> On Thu, Jun 15, 2006 at 3:28 PM, Adam Wolff wrote: >>>>> >>>>>> same flash player version? >>>>>> >>>>>> On Jun 15, Sarah Allen wrote: >>>>>> >>>>>>> >>>>>>> I have some code that I just started testing on other machines >>>>>>> today, and >>>>>>> unexpectedly, I started seeing different (broken) behavior on a >>>>>>> Mac. I've >>>>>>> isolated it down to the following test case: >>>>>>> >>>>>>> <canvas> >>>>>>> <node> >>>>>>> <!--- a reference to the Flash NetConnection object >>>>>>> @keywords private --> >>>>>>> <attribute name="_nc" value="null" /> >>>>>>> >>>>>>> <method name="init"> >>>>>>> super.init(); >>>>>>> this._nc = new NetConnection(); >>>>>>> >>>>>>> var ok = this._nc.connect('rtmp://localhost/test'); >>>>>>> var t = this; >>>>>>> this._nc.onStatus = function(info) { >>>>>>> _root.Debug.write('onStatus ', info.code); >>>>>>> _root.Debug.write('this (t) ', t); // this is >>>>>>> line >>>>>>> 17 >>>>>>> } >>>>>>> </method> >>>>>>> </node> >>>>>>> </canvas> >>>>>>> >>>>>>> which generates the following: >>>>>>> WARNING: test.lzx:17: reference to undefined variable 't' >>>>>>> this (t) undefined >>>>>>> >>>>>>> Confused again, >>>>>>> Sarah >>>>>>> >>>>>>> _______________________________________________ >>>>>>> Laszlo-dev mailing list >>>>>>> [email protected] >>>>>>> http://www.openlaszlo.org/mailman/listinfo/laszlo-dev >>>>>>> >>>>> >>>>> >>> >>> _______________________________________________ >>> Laszlo-dev mailing list >>> [email protected] >>> http://www.openlaszlo.org/mailman/listinfo/laszlo-dev >> > _______________________________________________ Laszlo-dev mailing list [email protected] http://www.openlaszlo.org/mailman/listinfo/laszlo-dev
