Re: [問題] 非常奇怪的『變數』生存範圍

看板Flash作者 (超:新:星)時間18年前 (2007/07/30 10:24), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串2/3 (看更多)
※ 引述《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 - 超新星の煌き,再び! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.36.205

07/30 15:15, , 1F
感謝s大
07/30 15:15, 1F

07/30 16:53, , 2F
我一點都不大 我很小 (死
07/30 16:53, 2F
文章代碼(AID): #16hKl3yT (Flash)
文章代碼(AID): #16hKl3yT (Flash)