2007-06-11

Frame Action 的 Function literal 裡的 Scope

之前在 mmug 的討論: Flash CS3 - AS3 又一影格程式問題
老方式用 describeType() 去檢查. 以 literal 方式定義的 function objects, 其內部的變數若不是以 this 為開頭, 皆會被轉換為 影格所在MovieClip 物件的屬性。
Frame Actions:
var me:Object = this;
var o:Object = {};
o.a = function():void{
var i:Number = 6;
this.c = function():void{
var k;
};
};
o.b = function():void{
trace(i);
trace(this.i);
trace(me.i);
};
o.a();
o.b();
trace(describeType(this));

結果:
6
undefined
6
...
<variable name="k" type="*"/>
<variable name="i" type="Number"/>
<variable name="me" type="Object"/>
<variable name="o" type="Object"/>
...

沒有留言:

FB 留言