當前位置:開發者網絡 >> 技術教程 >> 網頁設計 >> Flash >> 內容
精彩推薦
分類最新教程
分類熱點教程
    
FLASH -- 關於變量的問題FLASH -- 關於變量的問題
作者:未知
日期:2005-04-30
人氣:
投稿:(轉貼)
來源:未知
字體:
收藏:加入瀏覽器收藏
以下正文:
    前些天, 看到這個貼子, 就有一些疑問, 沒來得及仔細討論, 其實這個問題很重要, Flash的actionScript和其他的語言有不同的地方, 我查了幾本書, 把我所瞭解的補充一下。


    1.Flash沒有真正意義上的全局變量, 這點和Director不同, 全局變量是指一旦聲明, 在整個電影都有效, 這點Flash 是做不到的。對於我們來說, 要討論的是:

    a: 一個變量可以存在多久? 


    b: 怎樣設定和提取變量值? 

    2. Flash 的變量只在其所在的時間線上有效。 在某個時間線上聲明的任何變量對於該時間線上的所有scripts來說都有效。 所以對於在movieClip的時間線上聲明的變量, 如果要在主時間線上調用, 就必須使用點語法來指向所要針對的movieClip, 也就是對像(object).

    3.對於 movieClip裡的變量來說, 其壽命和該movieClip的在舞台上的instance的壽命相當。也就是說, 一旦這個instance從舞台上消失(不是指它的visual appearance), 那麼其中的變量也同時消失了。 同樣的道理對於主時間線上的變量來說, 一旦unload 該swf, 那它上面的變量也就消失了, 或者說不可以在被調用了。

    4. var 是的非常好的習慣, 正如斑竹所說的, 每次聲明變量用var, 很規範, 很專業, 而且盡可能的先聲明, 再賦值, 儘管Flash 5在這一點上很寬鬆。 

    5. 在function裡使用var來聲明變量是標準的局部變量, 也就是說只在function內有效。如果不用var來聲明, 仍然是非局部變量。

下面的例子也許可以說明這個問題。


  
  var x = 1                              //在function外,只是非局部變量 x,賦值為1
   function demo() {
   x=10;                                  //非局部變量 x,重新賦值為10
   y=20;                                  //非局部變量 y,賦值為20
   var z=30;                            //在function內是局部變量 z,賦值為30
   trace(x+","+y+","+z);         //在output窗口顯示結果
    }
   demo();                               //調用function, 結果是10, 20,30
   trace(x);                              //結果是10, function內的重新賦值還是有效
  trace(y);                              //結果是20
   trace(z);                              //結果是nothing, 因為是局部變量, 只在function內有效

相關文章: