blog.Ring.idv.tw

變數範圍-在「Frame」上用「var」來宣告變數的差異

變數範圍-在「Frame」上用「var」來宣告變數的差異

在「Frame」上用「var」來宣告變數的差異

基本上要宣告「區域變數」我們必須加上「var」來宣告之,為何筆者要加上「必須」來強調呢?這是因為加上「var」宣告在「Function」和宣告在「Frame」之間兩者將有所差異,所以我們不妨先看下述這兩個例子:

筆者製作兩個欲測試的flash,並且在它們的「Frame 1」個別加上些程式以便驗證,如下述:

var:Frame 1

var i = 10;
trace(i);

結果:

10

non_var:Frame 1

i = 10;
trace(i);

結果:

10

從上述的例子之中,我們可以發現其實兩者的結果是相同的,但是將它們的bytecode攤出來看之下,的確可以發現些端倪~

在「var i = 10;」宣告之下所採用的ActionCode為「0x3C」(ActionDefineLocal),相反的若直接採用「i = 10」來宣告的話,其所採用的ActionCode則為「0x1D」(ActionSetVariable),然而重點在於Flash雖然在兩者之間採用不同的ActionCode來處理,但是在取值的方式卻是利用相同的「0x1C」(ActionGetVariable)來取得變數值,所以我們可以就此推論:在「Frame」上無論是否使用「var」來宣告變數,其實是無傷大雅地!然而在「Function」卻並非如此~

By The Way, 在ActionScript 3.0之下採用「i = 10」的方式宣告變數是無法完成編譯的!

範例下載

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

2007-06-12 21:48:49

Leave a Comment

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

::: 搜尋 :::

::: 分類 :::

::: Ads :::

::: 最新文章 :::

::: 最新回應 :::

::: 訂閱 :::

Atom feed
Atom Comment