blog.Ring.idv.tw

變數範圍-在「Function」上用「var」來宣告變數的差異(二)

變數範圍-在「Function」上用「var」來宣告變數的差異(二)

「var」在Flash Player版本間的差異

我們在「變數範圍-在「Function」上用「var」來宣告變數的差異(一)」一文曾提及到「ActionDefineFunction」和「ActionDefineFunction2」兩者的區別,由於「ActionDefineFunction2」是在Flash Player 6 r65 版本之後才開始支援的指令(Instruction),所以這裡我們試著將先前的例子重新發佈為Flash Player 6,來觀察兩者之間的差異。

var:Frame 1

i = 10;
function test()
{
	var i = 20;
}
test();
trace(i);

結果:

10

倘若我們直接從bytecode上來看,當發佈成Flash Player 6版本之後的確產生了一些變化,我們可以看到上述是利用ActionCode「0x9B」(ActionDefineFunction)來定義「Function」,而非先前的「ActionDefineFunction2」(請參考:變數範圍-在「Function」上用「var」來宣告變數的差異(一)),而且最重要的是,上述所宣告「區域變數」的方式是利用ActionCode「0x3C」(ActionDefineLocal)來處理的,這也就是兩者之間最大的不同,所以我們即可得知無論發佈成Flash Player 6或7之後的版本,只要在「Function」內採用「var」宣告變數,Flash便會採用「ActionDefineLocal」或「ActionStoreRegister」來處理之

範例下載

本文若有任何謬誤,希望請不吝地賜教,若能指正不勝感激。

2007-06-13 11:54:42

Leave a Comment

Copyright (C) Ching-Shen Chen. All rights reserved.

::: 搜尋 :::

::: 分類 :::

::: Ads :::

::: 最新文章 :::

::: 最新回應 :::

::: 訂閱 :::

Atom feed
Atom Comment