2015-01-20

[AS3] inline與final所造成的super取用混淆問題

使用環境AIR SDK15.0
在正式輸出的時候 我通常會增加inline的設定
來增加程式執行的效能.

但發現經常會有一些地方會有奇怪的效果
public override function stage():Stage{
  return xxx;
}
public final get addedToStage():Boolean{
  return super.stage != null;
}
當在如上的例子中使用super就會有這個問題.
必須要將其中的final 拿掉不然會有非預期的輸出結果.
因為在ASC2.0中如果getter 或setter 中使用final會等同有加 [inline]的效果.

參考資料
Introducing ASC 2.0
Inline(內聯函數)在AS3中的使用
ActionScript Compiler 2.0 Backward Compatibility

沒有留言:

張貼留言