动态事件处理程序与Flash MX
首先我说处理程序时,我谈论onClipEvent(...)(...)处理程序。只是把事情说清楚
现在动态事件处理程序真的是Flash MX中带来的,因为他们允许我们改变一个处理程序在运行时的最好的事情之一。你可能不知道这意味着什么。嗯,这很简单,真的。试想一下,你想要一个影片剪辑向右走,当它到达一定的位置,使其停止。够简单。随着Flash 5中,这将是这样的:
onClipEvent(enterFrame事件)
{
(this._x <300)this._x + = 5;
}
为什么我需要动态处理呢?有两个原因。
第一个原因是,当剪辑达到所需的位置,该处理程序继续检查该影片剪辑的位置。这可能不是太尴尬了,如果有只有一个片段,但如果有100个,你会看到其中的差别,特别是如果你做一些更复杂的事情。所以用Flash MX,你可以清空处理程序,或彻底删除它。
但为了做到这一点,你必须要考虑处理程序功能。声明它作为一个框架的行动,并且不再对象:
myClip.onEnterFrame =功能()
{
(this._x <300)this._x + = 5;
否则删除this.onEnterFrame;
/ /删除它,但你可以简单地把它倒空
/ /,否则this.onEnterFrame = NULL;
}
这里,onEnterFrame宣布了访问myClip对象的一种方法。
第二个原因是,你可能想做些别的事情,一旦它的存在。比方说,您想要让您的剪辑上去。在Flash 5:
onClipEvent(enterFrame事件)
{
(this._x <300)this._x + = 5;
其他
{
(this._y> 300)this._y = 5;
}
}
还是没有问题的。但是如果你想从那里往左走?你不能把其他的像我们以前那样,因为会有冲突与第一个if(this._x 300)。你看这个问题?当然,这是可行的,但它是痛苦的。
现在不要惊慌,我在这里:)谢谢动态处理,我们要顺利处理这种情况。首先,我们要创建一些功能:
goRight =功能()
{
(this._x <300)this._x + = 5;
,否则this.onEnterFrame =党团;
}
党团=功能()
{
(this._y> 300)this._y = 5;
,否则this.onEnterFrame =赋给goLeft;
}
赋给goLeft =功能()
{
(this._x> 100)this._x = 5;
,否则this.onEnterFrame = NULL;
}
/ /我们分配goRight的函数来访问myClip
myClip.onEnterFrame = goRight;
第一个机能的执行goRight的,当短片是在右边,函数调用党团功能,等等...
你看这是如何更容易?当我们到达的位置,我们改变了的onEnterFrame处理,我们已经定义了一个函数,。与旧的处理程序没有冲突,因为它们不存在了。要注意的语法,但:
(责任编辑:卓想动画http://www.zxgzs.com)