2006/06/06 | 变量重名的分析与应用
类别(Flash课件设计) | 评论(1) | 阅读(79) | 发表于 11:40
场景中的MC元件实例可以写上一个实例名,用于代码调用时可以指定目标。但是当多个MC具有相同的实例名时,结果又如何呢?是同时对操作进行响应,还是以一定的规律进行响应的呢?
先来测试一下,场景中依次制作三个MC元件,实例名都称为KK,主场景帧中写入代码:
KK.onPress = function(){
this._x += 30;
}
运行一下看看,结果只有最先创建的那一个MC 有反应,其它两个没有变化。将最先那个MC删除掉,再运行,结果第二个创建的MC 有反应。
于是可以得到这样一个结论,当实例名重名时,系统会在舞台上进行搜索,找到第一个名称符合要求的变量时就停止搜索,也就是说搜索是以创建的顺序来进行的。
在舞台中,当对MC 进行复制时,如果MC 中写有实例名,该实例名也将被复制,此后如果对复制的MC 将无法直接进行变量的引用,这是需要避免的情况。而文本框中的变量,则可以通过在主场景中进行变量定义,例如:
var myTxt:String; 或者 var myTxt:Number;
  经过这样的类型指定,就可以在对输入值进行运算时,避免出现异外的情况。
  与次类似的是在类定义文件中,添加一些MovieClip对象,对象的名称与主场景中MC元件实例名相同,并不影响类的应用,以前我一直不理解,认为这样将出现两个同名的MC,但实际上这在Flash中是正常的,反到是如果没有在类中定义MC对象的话,相关的操作会提示找不到变量。这也许是在说明,舞台上的实例名具有较高的优先级,类文件中的同名MC会被舞台上的MC所取代,因此,类中所写的与MC有关的操作代码都将体现在舞台的MC上。
0

评论Comments