Re: [問題] 非常奇怪的『變數』生存範圍
※ 引述《icedesign (不可或缺的咖啡因)》之銘言:
: 一‧請問這樣子的指定方式,應該稱為什麼呢?因為它沒宣告,我不曉得
: 這應該是什麼形態(Number?String?),如果要trace它的型態,應該要
: 怎麼寫呢?(trace(???)因為trace(testNum),它只會丟結果)
trace( typeof(testNum) );
而testNum的資料型態,因為你指定了xxxxxxx.length這個Number給他
所以他的型態也是Number
: 二‧請為這代表testNum算是_global嗎? = =""可是我又有試過,在影格最
: 上方,宣告_golbal.testNum,可是在MC_Effect裡面也是收不到阿?
: 也就是代表說,我把原作的指定方式想做是_global是錯誤的吧!
: = ="""那這樣子的話,它這樣子到底是?????不是區域變數?也不是全域
: 變數?(+ = ")...今天想這個問題想好久
不是全域變數(global),而是時間軸變數(timeline)
而且如果你要用global的話,在你所有要改變它值的地方,
都應該要寫 _global.testNum=xxxxxx
如果只在開頭寫 _global,會是如此:
1.你宣告了一個全域變數testNum
2.你又宣告了一個時間軸變數testNum,並且指定xxxxxxx.length的值給它
3.trace(_global.testNum)會得到全域變數的值,trace(testNum)會得到時間軸變數的值
: 三‧還是說,= = 其實這是某種偷吃步呢?因為我將我的宣告方式改變之後
: ,我的MC_Effect就像『台灣大哥大』的廣告一樣,testNum這個變數
: "到哪裡都收的到"。
我們先看一下 var 陳述式的 F1
var 陳述式
var variableName [= value1][...,variableNameN[=valueN]]
用來宣告區域變數。如果您在函數中宣告變數,則該變數為區域性的。
它們為該函數而定義,並在函數呼叫結束後失效。更明確地說,使用
var 所定義的變數對於包含此變數的程式碼區塊而言,這是一個區域變
數。程式碼區塊要以大括號 ({}) 區分出來。
如果您在函數外宣告變數,則包含此陳述式的整個時間軸都可以使用這些變數。
若某個變數的範圍是另一個物件,則您不能將該變數宣告為區域變數。
也就是說在你的程式裡面,var testNum:Number
已經把 testNum 宣告為這個函數裡的區域變數
當你 ParseXML 的 } 結束的時候,testNum也隨之灰飛煙滅
除非函數有將這個變數 return 出來,不然其他函數是得不到它值的
原範例的寫法則是把 testNum 宣告為時間軸變數
要說是偷吃步嗎...? 也可以這麼說吧
最按部就班的方法,是在ParseXML()這個函數之前就宣告 testNum
var testNum:Number=new Number();
ParseXML=function() {
textNum=.........
}
建議F1:
學習 Flash 中的 ActionScript 2.0 > 資料和資料類型 > 關於變數
學習 Flash 中的 ActionScript 2.0 > 資料和資料類型 > 關於變數
> 關於變數和範圍
--
Dance Dance Revolution
-S u p e r N O V A 2-
超新星の煌き,再び!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.36.205
推
07/30 15:15, , 1F
07/30 15:15, 1F
推
07/30 16:53, , 2F
07/30 16:53, 2F
討論串 (同標題文章)
Flash 近期熱門文章
PTT數位生活區 即時熱門文章