[問題] 非常奇怪的『變數』生存範圍
= =" 事情是醬子的,目前正在學習XML,所以從網路上的範例,找到了
一個Flash&XML的範例。
經過幾個小時的分析,也看的懂每一行的用意,但是卻發現了一個我覺
得很奇怪的事情。
之前上Flash程式課的時候,老師有說,要增加寫程式的功力,就要從
寫程式的習慣養起,該宣告就要宣告,反正就是一切要照正規來,以後
才不會自己寫的亂七八糟,一直到現在,我也都還是這樣。
網路上的高手很多,所以我想也可能是他們自己寫出來自己都看的懂,
但就在我設計自己的Flash時,發現了一個很怪的方式,應該是小的才
疏學淺,所以一直想不懂,這個高手所寫的範例當中,這種『指定』方
法應該怎麼解釋(在此感謝這個範例的作者奶綠茶,你寫的範例真的是詳
細到根本是佛心來著。)
===============================問題開始線=====================================
中文說明:
在影格上,宣告了一個新的xml物件
var test_xml:XML = new XML()
開始下載XML
test_xml.Load("test_xml.xml")
開始使用onLoad
test_xml.onLoad = function (succeess){
if(succeess){
ParseXML()
}
}
function ParseXML(){
testNum = firstChild.childNodes.length
}
function MC_Effect(){
trace(testNum)
}
MC_Effect()
問題來了,在上面ParseXML()當中,原作的指定方式是
testNum = firstChild.childNodes.length
而我以為正常的寫法應該是
var testNum:Number = firstChild.childNodes.length
所以,在原作的另一個接收該變數testNum的function,他是可以收到的。
而我因為已經將該變數testNum宣告在裡面,所以MC_Effect是收不到的。
我的問題來了:
一‧請問這樣子的指定方式,應該稱為什麼呢?因為它沒宣告,我不曉得
這應該是什麼形態(Number?String?),如果要trace它的型態,應該要
怎麼寫呢?(trace(???)因為trace(testNum),它只會丟結果)
二‧請為這代表testNum算是_global嗎? = =""可是我又有試過,在影格最
上方,宣告_golbal.testNum,可是在MC_Effect裡面也是收不到阿?
也就是代表說,我把原作的指定方式想做是_global是錯誤的吧!
= ="""那這樣子的話,它這樣子到底是?????不是區域變數?也不是全域
變數?(+ = ")...今天想這個問題想好久
三‧還是說,= = 其實這是某種偷吃步呢?因為我將我的宣告方式改變之後
,我的MC_Effect就像『台灣大哥大』的廣告一樣,testNum這個變數
"到哪裡都收的到"。
(@________@""") 我真的覺得好神奇喔!
小的才疏學淺,希望有高手可以幫小的解惑,m(_ _)m拜託拜託講解一下!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.178.144
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 3 篇):
Flash 近期熱門文章
PTT數位生活區 即時熱門文章