作者scars (超:新:星)
看板Flash
标题Re: [问题] 非常奇怪的『变数』生存范围
时间Mon Jul 30 10:24:00 2007
※ 引述《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
1F:推 icedesign:感谢s大 07/30 15:15
2F:推 scars:我一点都不大 我很小 (死 07/30 16:53