陈海良十七帖集字创作:Flash中的load、onEnterFrame、onClipEvent(enterFra...
来源:百度文库 编辑:偶看新闻 时间:2024/05/06 17:07:31
Flash中的load、onEnterFrame、onClipEvent(enterFrame)
2011-05-13 17:47:19| 分类: 计算机学习 | 标签: |字号大中小 订阅
on
这个语句指专门给电影剪辑添加命令的语句,就像on语句是专门给按钮添加命令一样。
影片剪辑事件类别
on
on
on
on
当鼠标左键被按下时,会触发本事件一次。
on
on
on
on
enterFrame()语句和load()语句:
要为影片剪辑添加脚本,首先要选中影片剪辑,再打开它对应的动作面板,然后在其中输入脚本。影片剪辑脚本和按钮的脚本类似,它们都使用事件处理函数,与按钮的on关键字不同,影片剪辑使用 on
影片剪辑最重要的两种事件是load和enterFrame, load事件在影片剪辑完全加载到内存中时发生。在每次播放Flash影片时,每个影片剪辑的load事件只发生一次。
在主时间轴停止播放时,影片中的影片剪辑并不会停止播放,这个特性决定了影片剪辑的另一个事件enterFrame的重要性。enterFrame事件在影片每次播放到影片剪辑所在帧时发生。如果主时间轴中只有一帧,且不论它是否在该帧停止,该帧中的影片剪辑都会不断触发enterFrame事件,且触发的频率与Flash影片的帧频一致。
影片剪辑事件的使用方法如下所示:
on
var i = 0;
}
on
trace(i);
i++;
}
当影片剪辑的load事件发生时,将变量i设置为0。当影片剪辑的enterFrame事件发生时,向输出窗口中发送i的值,然后将i加1。输出窗口中会从0开始输出以1递增的数字序列,直到影片被关闭为止。
为了熟悉影片剪辑事件处理函数的用法,我们来为影片剪辑编写一段简单的脚本,使影片剪辑逆序播放,我们将从影片剪辑的最后一帧处开始播放,使用prevFrame命令使影片剪辑每次后退一帧。
本例文件场景中有一个影片剪辑元件MCaaa,查看一下它的属性面板,并没有为其实例命名,这是因为我们要直接在影片剪辑的动作面板中添加脚本,并不需要用到实例名称。
选中影片剪辑MCaaa,此时动作面板的标题栏中应为“动作-影片剪辑”。打开动作面板,其中添加了如下ActionScript:
on
gotoAndStop(40);
}
on
prevFrame();
}
在事件处理函数on
按Ctrl+Enter键测试影片,你将看到齿轮以与上例相反的方向转动,直到影片剪辑的时间轴回到第1帧,prevFrame命令不起作用,影片剪辑停止播放。要让它连续不断的播放,可以在影片剪辑元件MCaaa的时间轴第1帧的动作面板中添加如下语句:
gotoAndStop(40);
load()语句的用法其实很简单,load()语句就是装载的意思,一但程序被激活,load()语句就发生事件,不用点击任何按钮就可以执行程序体,比如,你如果一打开你的swf格式的影片就想进入新浪主页,那么你就在你的fla文件(源文件)的第一贞上编写:
load(getURL("http://www.sina.com.cn","_blank"))
这个语句就是说:你发布的swf格式的影片或者网页,一旦被打开,那么立即执行程序---直接进入新浪主页,并且在另外一个窗口打开新浪主页(_blank就是在另外一个窗口打开)!!
-----------------------------------------------------------------------
比如写在影片剪辑上的on
而on
你可以建一个影片剪辑,然后拖到舞台中,给影片剪辑加代码:
on
_x =_x+2;
}
然后测试影片,会看到那个影片剪辑不断向右移动.
而如果写on
_x =2;
}
是看不到它移动的,因为,_x只在加载元件的时候执行了一次 2.这是两种事件,on
enterFrame 以影片帧频不断地触发此动作。首先处理与 enterFrame 剪辑事件关联的动作,然后才处理附加到受影响帧的所有帧动作脚本。
on
var rq:Date=new Date();
trace(rq.getSeconds());
//_x=_x+2;
}
默认帧频下连续输出12个相同的秒数。
-------------------------------------------------------------------------------------
我有一mc,该mc里是一段动画,且mc里的第一帧上加了AS:stop()。
将此mc从符号库里拉至主场景,给mc加上AS:
on
this.play();
}
测试的时候,该mc不会播放。而如果是
on
this.play();
}
却能够播放,这是为什么。说到底,是对这两个的区别没搞清楚。
-------------------------------------------------------------------
on ----------------------------------------------------------------- 影片剪辑最重要的两种事件是load和enterFrame,load事件在影片剪辑完全加载到内存中时发生。在每次播放Flash影片时,每个影片剪辑的load事件只发生一次。 } on
在flashAS手册里,关于EnterFrame的解释是:进入帧。
_mc.on
刚开始学AS的时候,我顺其自然地认为,如果当前帧用了stop语句,那么影片就会停止播放,就不会再触发on
在别的编程语言里,等待某个变量改变,一般用循环语句来等待。这些循环语句一般是if...else、do...loop、for ... next等等。这些在AS里也有,但是你自己试试看,一旦使用这些循环,一旦循环次数较多,很容易使影片停顿,甚至进入死循环。
在AS里,一般不用循环语句来监测变量。而是用EnterFrame和stop配合来实现的。
AS的帮助文章没有任何声明:当影片stop在当前帧的时候,并没有真正停止播放,而是反复播放当前帧。而且,是按照影片设定的帧频率反复播放,反复触发EnterFrame事件。
我为此疑惑很久。
但是,AS很多例子都利用这个模式来进行循环:
stop();
_mc.on
程序处理语句
};
了解这个道理,我们可以通过设定影片播放的帧频率来控制循环速度。比如说需要很慢的时候,甚至每秒钟循环一次也可以的。
下面说说on
on
on
使用的地方
写在 帧 的 脚本编辑框 里
写在 MovieClip(影片剪辑) 的 脚本编辑框 里
格式
_mc.on
}
On
}
类型
事件处理函数
事件
执行的先后循序
后
前
关于“执行的先后循序”是我自己的一个试验得出的结论。
我在一帧里,在帧的脚本里有:
_mc.on
trace(“on
}
然后在_mc的脚本里再写:
on
trace(“on
}
当时我的变态的心理是看看on
结果是:
on
on
on
on
on
on
on
在主时间轴停止播放时,影片中的影片剪辑并不会停止播放,这个特性决定了影片剪辑的另一个事件enterFrame的重要性。enterFrame事件在影片每次播放到影片剪辑所在帧时发生。如果主时间轴中只有一帧,且不论它是否在该帧停止,该帧中的影片剪辑都会不断触发enterFrame事件,且触发的频率与Flash影片的帧频一致。
影片剪辑事件的使用方法如下所示:
on