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