学习笔记(2)——关于onEnterFrame和onClipEvent(enterFrame)

      FlashAS学习 2007-3-6 23:48

学习笔记(2)——关于onEnterFrame和onClipEvent(enterFrame)

 在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

.

.

.

.

哈哈!虽然无聊,也算一个试验吧。

标签集:TAGS:flash as
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}