Re: [問題] flash中可設全域變數嗎?
※ 引述《aquarianboy (我是沒牌的營養師!)》之銘言:
: ※ 引述《jing007 (嗚~合購版讓我變肥肥肥豬)》之銘言:
: : 我是做音樂播放器 現卡在播放的軸不能拉
: : 即使能拉也不能唱 不然就是一直重頭播 重頭播的....每拉一次就重頭播
: : 我做了Press(一個函式)去抓軌道的值稱x
: : 而onMouseUp(一個函式)時便將x值放入播放音樂的函式中
: : 但是偵測時 發現在onMouseUp卻是無定義的值
: : flash有全域變數的宣告方式嗎?
: : 另有沒有其他方式能製作這個軸....
: 我想會抓到undefined的值,是因為scope不對的關係
: 例如在onMouseUp裡定義的變數,通常只能在該事件的範圍內才"看"得到
: 除非像s大提到用_global來宣告全域變數
: 另外,把變數全部丟到_root上也是ok
: 但比較容易出問題的是
: 例如你在你的swf中宣告了一個叫_root.xxx的變數
: 剛好別人也宣告了一個xxx的變數,然後把你的檔案包進來
: 就有可能會發生看起來莫名奇妙的bug了
: 所以全域型態的變數,在使用的時候盡量小心或是命名命的奇怪一點,減少重複的機會
: (建議是盡量少用...^^)
: 比較建議的方法,是把程式碼寫在時間軸上,而不要寫在Button或MC上
: 例如原本on(release){...},改成abc_mc.onRelease = function(){...}
: 一開始可能不太習慣
: 習慣這樣的寫法之後,在程式碼的控管上會輕鬆得多,不用一層一層的找程式碼
: 而且這樣的做法,變數的scope就會在時間軸上了
: 不用_global或_root的方法,都可以比較容易抓到了
: 供你參考 :)
關於e大問到變數Scope(生存空間? 範圍? 不知道中文怎麼翻譯比較好)
舉個例子:
var A:Number = 99;
function TEST(){
var A:Number = 100; //在function TEST裡面宣告了一個變數A
var B:Number = 101; //又再宣告了一個變數B
trace(A);
}
TEST(); //輸出結果是 100,因為它先看到離自己最近的A
//如果沒有變數A,它會看得到上層的A = 99
trace(A); //輸出結果是 99,它"看"不到TEST function裡的A,只看到最上層的A
trace(B); //輸出結果是 undefined,因為它"看"不到TEST function裡的B
以上就是變數scope的簡單說明之一
不知道這樣是否清楚了呢? :)
更細節的資料,可以到google翻一下Variable Scope的資料,應該會有更詳細的資料
--
http://www.eddie.com.tw/blog/
http://www.eddie.com.tw/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.133.136.105
推
04/25 19:04, , 1F
04/25 19:04, 1F
討論串 (同標題文章)
Flash 近期熱門文章
PTT數位生活區 即時熱門文章