在flashAS手册里,关于EnterFrame的解释是:进入帧。
_mc.onEnterFrame{}就是表示当影片播放到当前帧,触发一个事件。
刚开始学AS的时候,我顺其自然地认为,如果当前帧用了stop语句,那么影片就会停止播放,就不会再触发onEnterFrame事件了。但是有意思的是,实际上,EnterFrame的最多的用处是和stop配合来使用的。
在别的编程语言里,等待某个变量改变,一般用循环语句来等待。这些循环语句一般是if...else、do...loop、for ... next等等。这些在AS里也有,但是你自己试试看,一旦使用这些循环,一旦循环次数较多,很容易使影片停顿,甚至进入死循环。
在AS里,一般不用循环语句来监测变量。而是用EnterFrame和stop配合来实现的。
AS的帮助文章没有任何声明:当影片stop在当前帧的时候,并没有真正停止播放,而是反复播放当前帧。而且,是按照影片设定的帧频率反复播放,反复触发EnterFrame事件。
我为此疑惑很久。
但是,AS很多例子都利用这个模式来进行循环:
stop();
_mc.onEnterFrame=function{
   
    程序处理语句
};
了解这个道理,我们可以通过设定影片播放的帧频率来控制循环速度。比如说需要很慢的时候,甚至每秒钟循环一次也可以的。
下面说说onEnterFrame和onClipEvent(enterFrame)在使用上的不同。因为很多初学的都会有些疑惑的。
onEnterFrame
onClipEvent(enterFrame)
使用的地方
写在 帧 的 脚本编辑框 里
写在 MovieClip(影片剪辑) 的 脚本编辑框 里
格式
_mc.onEenterFrame=function(){
}
OnClipEvent(enterFrame){
}
类型
事件处理函数
事件
执行的先后循序

关于“执行的先后循序”是我自己的一个试验得出的结论。
我在一帧里,在帧的脚本里有:
_mc.onEenterFrame=function(){
   trace(“onEenterFrame”)
}
然后在_mc的脚本里再写:
onClipEvent(enterFrame) {
   trace(“onClipEvent(enterFrame)”)
}
当时我的变态的心理是看看onEnterFrame和onClipEvent(enterFrame),到底哪个更厉害,结果出什么?
结果是:
onClipEvent(enterFrame)
onEnterFrame
onClipEvent(enterFrame)
onEnterFrame
onClipEvent(enterFrame)
onEnterFrame
onClipEvent(enterFrame)
onEnterFrame