Flash 5切换到Flash MX中时遇到变量的作用域问题
时间:2013-08-21 09:23来源:卓想动画http://www.zxgzs.com 作者:QQ:610929375 点击: 次
程序员从Flash 5切换到Flash MX中时遇到的第一个问题是变量的作用域。我的意思是什么变量范围的是:我在哪里定义我的变量?从我在哪里可以访问它们。在Flash 5中,一切都非常简单。现在是有点不同的,面向对象的,但很容易习惯。让我们看一个例子,看看事情如何在Flash 5:
/ /假设你定义的myVar的主时间轴上的= 5
/ /然后在您的剪辑:
onClipEvent(enterFrame事件)
{
myVar的+ +;
跟踪(MYVAR)的;
}
这将返回... 1,2,3,4 ......为什么呢?因为Flash看起来myVar的在时间轴上的影片剪辑的一个变量,但这个变量被定义在_root。这就是,变量为什么从它的默认值:0。使其工作,你就必须,告诉Flash在哪里可以找到的变量,也就是说写_root.myVar的+ +;然后跟踪(_root.myVar)。然后,你会得到6,7,8 ...
其他的解决方案是定义myVar的影片剪辑的时间轴中,例如,当你加载的剪辑。我浓缩一下代码:
onClipEvent(负载){MYVAR = 5;}
onClipEvent(enterFrame事件){跟踪(myVar的+ +);}
现在用Flash MX有什么新?是的,动态的事件处理程序。所以,当你声明一个动态的事件处理程序,而你是指在它的变量,Flash将时间轴上的处理程序的位置已经被定义为变量。试想一下,你在第一帧的影片有这样的代码:
_root.createEmptyMovieClip(“测试”,1);
i = 5时;
test.onEnterFrame =功能()
{
跟踪(_root.i);
迹线(一);
跟踪(this.i);
}
现在,让我们来看看这个。我创建了一个空的影片剪辑名为test的_root,然后我初始化变量i 5。因此,这个变量是位于_root。最后,我们分配一个动态的事件处理程序进行测试影片剪辑,告诉它跟踪3个变量:
•_root.i / /返回5
这是我们宣布的变量_root,没问题。
•I / /返回5
现在我们看到了,我,我们指的是还我宣布在_root,而不是一个变量相对的对象。
•this.i / /返回未定义
比这更多:如果我们看一下里面的对象的变量,没有之一。
这是Flash 5和Flash MX中之间最大的区别之一:Flash 5中检查声明变量时,如果有一个路径的变量(_root,_root.mc1 ...),在这种情况下,一切工作正常。如果没有,他使得相对于对象声明的变量的变量。这意味着,如果你申报操纵一个变量的一个函数,它的影片剪辑中,Flash将局部变量的影片剪辑,所以也不会有任何问题。
Flash MX中声明一个变量时,检查的路径,如果没有任何问题,它会使被宣布的时间表,其中变量的变量相。这意味着,如果你_root声明一个函数,这个函数操纵变量没有在它前面的道路,所有的对象调用此函数将使用相同的变量在同一时间。
(责任编辑:卓想动画http://www.zxgzs.com)
上一篇:如何将变量传递到Flash