|
原作者: Flash-age
Actionscript的最前面六个Action--Go to, Play, Stop, Toggle High
Quality, Stop All Sounds, 和 Get URL,提供了创作一个交互性电影所需的所有动作(函数)。这些函数并不是自动执行的,需要通过一定的机制来触发执行,这就要用到事件引擎。事件引擎告诉这些函数在某个指定的条件下被触发运行,例如:你想在按纽按下后,对某个电影进行初始化,或者你想电影在播放指针到达某个Frame时停止播放等等。因此,要创建一个交互性电影其实就是计划好需要检测的事件(鼠标点击,Frame播放等),然后添加一个事件引擎来检测他,并指定当这些事件发生时需要执行Action。
一般说来,Flash中有三种事件引擎:按纽事件,键盘点击和Keyframe事件,接下来就让我们一一介绍:
1。按纽事件
这种访问者的交互性按纽事件是基于鼠标指针的位置和移动,如果鼠标指针移动到一个按纽的可点击区域里时,他的符号会由箭头变成手指的符号。此时,鼠标在计算机里的状态为“Over”,如果指针移出了这个范围,则称“Out”或“Outside”,当鼠标没有被按着拖动时,称“rolling”,当鼠标被按着拖动时,称“Dragging”
,以下就是flash按纽的事件引擎:
注意:按纽中的事件引擎和Action只能在按纽在场景里的Instance中放置,虽然按纽中的四个状态Keyframe也可以被赋予Action,而不是按纽的四个状态中放置。放置在这四个状态Keyframe里的所有动作将被忽略。
Press:
一个简单的鼠标点击事件可以被分为两个过程:鼠标按下(Press)和鼠标放开(Release)。当鼠标移动到一个按纽的可点击区域里并点击该按纽时,Press事件发生,这适用于按纽作为开关的场合。这里很需要注意的一点是:Flash提供的这种事件是不可‘撤消’的,也就是说,最好不要将这种事件用在一些重要的用户动作里,一旦这个事件发生后,不会有类似Windows的确认步骤。
Release:
当鼠标指针移出按纽的可点击区域时,这个事件被触发。
Release Outside:
当鼠标指针移动到一个按纽的可点击区域里,点击这个按纽后,然后移出可点击区域,放开鼠标,这一系列事情发生后,这个事件被触发。
Roll Over:
当鼠标指针移动到按纽的可点击区域里时,这个事件发生(不需要鼠标被按下)。
Roll Out:
当鼠标指针移出按纽的可点击区域时,这个事件发生。
Drag Over:
当鼠标指针被按着从一个按纽的可点击区域里移出时,然后再被按着移回该按纽的可点击区域时,这个事件发生。这是一个很有用的事件,可以用在很多场合,如游戏,以及购物车等。
Drag Out:
当鼠标指针被按着从一个按纽的可点击区域里移出时,这个事件发生。
2。键盘点击事件:
顾名思义,就是通过访问者点击键盘来产生动作。你必须为这件事做一个按纽(隐藏的或可见的都可以),把按纽放在场景里,在将键盘事件赋予这个按纽。让我们来看一个具体的例子:
做一个当‘S’键被按下时发生的事件引擎:
1。创建一个新的Layer;
2。在这个Layer里放一个按纽,
3。双击这个按纽打开属性对话框,选择标签Action;
4。按“+”,在下拉菜单里选择 OnMouseEvent;
5。选中在右边的Key Press选项,在下面的框中填入‘S’;
6。再按‘+’,加入当‘ S‘被按下时要触发的Action;
7。OK。
在使用中,有必要提请注意以下几点:
1。<ESC>不是一个可以使用的点击事件;
2。不支持组合键;
3。当电影在浏览器里播放时,必须预先提示用户在电影范围里先用鼠标点击一下,击活整个电影,如果不这么做的话,这种事件不会发生;
4。由于<ENTER>,小于号,大于号键被用在Test
Movie的环境里,因此,建议不要用这些键作为控制键,如果要的话,最好在浏览器中测试无误;
5。这种事件是大小写敏感的。
3。Keyframe事件:
这种事件不依赖于用户,而在于电影自身。时间轴里每个Keyframe都可以被赋予Action。当播放指针移动到含有事件的Keyframe里时,就会触发事件的发生。除非在指针到达这个Keyframe之前遇到了Goto的Action。让我们来看一个例子,用Keyframe事件来触发循环动作(loop):
1。创建一个新的Layer;
2。在这个Layer里插入50个frame;
3。在第30.35.36 和50个frame里分别按F7插入Blank
Keyframe;
4。在Keyframe 1里画一个绿色的圆圈;
5。在KF 30里画一个正方型框;
6。在KF 50里画一个黄色的圆圈;
7。在KF 36里双击,打开属性对话框,加入:Goto
and Play(30);
8。OK。
实际应用中,往往会在许多Keyframe里加入Action,为了避免混乱,建议你最好将所有的Keyframe放在一个独立的Layer里。
总之:尽管Flash中交互动作可能很复杂,但归结起来也很简单:一个事件引擎等待某个事件的发生,当这个事件发生时,就触发一定的动作(Action)产生‘交互’。 |