Flash MX 2004 ActionScript图文教程(十二)

教程

  2.4影片剪辑事件
  相对于前面所介绍的鼠标事件、键盘事件以及帧事件而言,影片剪辑事件则显得稍为有点难懂。当我们将一个影片剪辑放到场景中时,他就成了一个“事件发射器”,不断地报告自己的运行状态,如果我们捕获这样的事件,就可以做出相应的反应和处理。影片剪辑有多种,下面分门别类地加以介绍。

  2.4.1onClipEvent(Load)和onClipEvent(unload)
  这个事件在影片剪辑加载的时候发生,那什么是影片剪辑的加载呢?比方说,你在场景中添加了一个影片剪辑clip_mc,并让他在第10帧的时候出现影片中,那么第10帧的时候它就会触发这个事件。要想处理这个事件可以选择影片剪辑clip_mc,然后在下面的脚本面板中输入这样的代码(通常用来对影片剪辑进行初始化):

  onClipEvent(Load)

  {

  }

  onClipEvent(unload)的作用和onClipEvent(load)的作用恰好相反,当影片剪辑消失的时候,这个事件就会发生。

  2.4.2OnClipEvent(enterFrame)
  enterFrame事件会随着影片的播放而不断发生,影片每前进一帧,影片剪辑就会触发一次enterFrame事件。假设影片的播放速率为每秒20帧,那么这个事件就会以每秒20次的速率不断产生。你一定会问,这样的事件有什么作用?其实在影片剪辑事件中,enterFrame应该说是最常用的,因为他可以用来制作相当复杂的动画。比方说,我们要制作一个炸弹从空中不断翻滚落下的动画可以按照这样的步骤来执行:首先建立一个影片剪辑作为炸弹,将其拖放到场景中建立影片剪辑实例,让这个实例捕捉enterFrame事件,并为其设计这样的代码:

  onClipEvent(enterFrame)

  {

  this._Roation+=10;

  this._y+=10;

  }

  这段代码的意思就是,每隔一帧将影片剪辑(this)旋转10度,同时沿纵向移动10个单位。这里用到了一个“+=”运算符,可能有点容易让人感到困惑,其实这是一种常用的运算符简写方式,意思是“自己给自己加上某个值”,例如This._Rotation+=10和This._Rotation=This._Rotation+10是等效的。

  2.4.3onClipEvent(MounseMove)、onClipEvent (mouseDown)和onClipEvent (mouseUp)
  这个事件和前面见过的很多时间似乎有些相似,这几个事件确实是当鼠标移动的时候发生,但是要特别注意一点,不论鼠标在场景的什么位置(而不一定要在影片剪辑上方),这个事件都会发生。鼠标每动一下,MouseMove事件都会发生一次。同样,你又要问,这个事件能干什么了?举例来说,我们需要制作一个类似泡泡龙那样的游戏,屏幕下方有一门大炮,当鼠标移动的时候,炮口会始终指向鼠标的方向。这种效果就可以onClipEvent(MouseMove)来实现。具体来说,就是将大炮制作成一个影片剪辑,然后为其添加这样的代码:

  onClipEvent(mouseMove)

  {

  var_angle=((this._x-_root._xmouse)/(this._y-_root._ymouse));

  trace(var_angle);

  var_angle=Math.atan(var_angle);

  var_angle=var_angle*180/Math.PI;

  this._Rotation=-var_angle;

  }

  这段代码用到了几个Flash提供的数学函数,它们都是在Math对象内部的,因此用起来很方面。首先,用当前影片剪辑的横向和纵向座标减去鼠标的横向和纵向座标,然后计算及其夹角的正弦值,接着将这个值用反正切函数换算成角度(Math.atan),注意,结果是弧度数,需要再转换成常用的角度,最后在将其复制给影片剪辑的_Rotation参数,实现大炮随着鼠标指针的运动而旋转的效果。

  搞懂了mouseMove事件,MouseDown和MouseUp的含义也就不难理解了。

  2.4.4OnClipEvent(keyDown)和onClipEvent(KeyUp)
  这两个事件和前面的on(Keypress)相似,都是用来捕获键盘的按键事件的。不过,需要特别强调的是,OnClipEvent(KeyDown)和onClipEvent(KeyUp)这两个事件的功能要强大得多,将它们结合起来使用可以捕捉用户按下的组合键(比如CTRL+A),这比只能够捕捉单个按键动作的on(Keypress)要强大得多。比方说,如果我们需要捕捉用户按下CTRL+F的操作可以使用这样的代码:

  onClipEvent(keyUp)

  {

  if (Key.isDown(Key.CONTROL) && Key.isDown(70))

  {

  //执行相应的操作

  }

  }

  这段代码中使用了内置对象Key,这个对象对于按键的处理非常有用。IsDown()方法用来监测某个键是否已经按下,这个函数的参数可以是键值比如70对应F键。也可以使用Key对象内置的键名称,比如Key.CONTROL就是指CTRL键。将这两个键是否按下的结果进行逻辑与运算(&&)就可以知道CTRL和F键是否同时按下。

  2.4.5OnClipEvent(data)
  如果某个影片剪辑实例进行了数据加载的操作,那么OnClipeEvent(data)事件会在数据加载完成的时候发生。比方说,我们在某个按钮的on(press)事件处理中加入了代码执行变量加载操作,并将代码加载函数loadVariables()的目标参数设置为某个影片剪辑。然后再为这个影片剪辑添加OnClipEvent(data)事件,当参数加载完毕之后,影片剪辑就会收到一个OnClipEvent(data)事件。

  前面介绍了很多事件,但事实上Action Script提供的事件还有很多。除了键盘事件、鼠标事件等等这些非常直观的事件之外,还有一些比较“抽象”的事件。比方说,一段声音播放完成之后会产生一个事件,当用户调整播放器的窗口大小时也会产生一个事件。捕获并处理这些事件可以进一步提升Flash影片的互动性能。

时间: 2024-10-21 19:51:09

Flash MX 2004 ActionScript图文教程(十二)的相关文章

Flash MX 2004 ActionScript图文教程(十)

教程 2.3帧事件 2.3.1帧事件简介 帧事件和前面介绍的鼠标事件以及键盘事件的主要区别在于,帧事件并不是一个交互式的事件.每当影片播放指定的帧时,帧事件内部的代码就会被执行.在Flash的开发环境中,帧事件在时间线上会有一个"a"标记. 在具体的设计中,帧事件的用处是非常多的.比方说影片的第1帧总是受到垂青的,因为我们一般总是要在这一帧当中对程序进行一些初始化操作,比方说定义变量.函数等等.再比如,在很多交互式的程序中,我们一般要在需要等待用户输入(比如单击一个按钮)的时候,选择恰

Flash MX 2004 ActionScript图文教程(十四)

教程 2.6事件监听 事件有一个习气,就是"拉帮结派",正常情况下,某些对象是接收不到某些事件的,比方说一个动态文本就不能接受鼠标事件.如果我们编写这样的代码为一个动态文本指定事件处理代码: myTextField_txt.onMouseDown = function(){ } 当我们在它上面单击鼠标时,代码并不会执行,因为它压根就不会接收到鼠标事件.要想让它正确接受鼠标事件,必须再加上这样的代码: Mouse.addListener(myTextField); 这个语句就是让myTe

Flash MX 2004 ActionScript图文教程

教程 1.Flash MX 2004 ActionScript图文教程(十四) [2005-03-02]     2.Flash MX 2004 ActionScript图文教程(十三) [2005-03-02]     3.Flash MX 2004 ActionScript图文教程(十二) [2005-03-02]     4.Flash MX 2004 ActionScript图文教程(十一) [2005-03-02]     5.Flash MX 2004 ActionScript图文教

Flash MX 2004 ActionScript图文教程(六)

教程 1.4.4代码编写 现在开始进入最麻烦的步骤--代码编写,我们将会接触到很多新的东西. 1.文本文件数据加载 在最开始的时候,我们曾建立一个文本文件,将其命名为"subtrahend.txt",存在.fla文件所在的目录下,这个文件中包含有程序需要读取的参数,现在我们就要编写代码将这些数据读取出来. 选中"脚本"层中的第一帧,然后打开行为面板,输入这样的代码: var externalData:LoadVars = new LoadVars(); extern

Flash MX 2004 ActionScript图文教程(二)

教程 1.3ActionScript编辑器 Flash MX 2004中提供了一个非常易用的ActionScript编辑器,这一小节我们就来熟悉这个编辑器的使用方法. 1.3.1启动ActionScript编辑器 在Flash MX 2004中打开菜单"窗口-〉开发面板-〉动作"(快捷键F9)即可打开ActionScript编辑器. 1.3.2ActionSctipt编辑器的结构 从图中可以看出,ActionScript编辑器由四个部分组成 脚本面板 这个区域相当于一个文本编辑器,在这

Flash MX 2004 ActionScript图文教程(五)

教程 1.3.4独立脚本文件 打开菜单"文件->新建",从新建文档对话框中选择"动作脚本文件"可以建立独立.AS文件,这种文件的最大优点是可以重复使用.比方说,你在一个项目中建立的脚本可以放在独立的.AS文件中,其他项目要使用到类似的功能,你就可以直接调用这个.AS文件中的代码.这样可以大大提高开发效率,减少代码的冗余程度. 1.4第一个脚本程序 下面我们通过一个非常简单的ActionScript程序演示ActionScript的操作过程,虽然这个例子看上去有

Flash MX 2004 ActionScript图文教程(一)

教程 第1章入门 ActionScript是一种编程语言,Flash专用.ActionScript的语法类似javascript或者Java,如果你以前接触过这两种语言,你会发现ActionScript非常易懂易用.即便你没有接触过Java或者javascript,掌握和运用ActionScript也绝非什么难事. 1.1ActionScript的演变过程 ActionScript是不断发展的,最早出现在Flash 5种,目前的最新版本是ActionScript 2.0,已经趋于成熟.Flash

Flash MX 2004 ActionScript图文教程(四)

教程 1.3.3.2非可见元素类型自动识别 以上说的是ActionScript对可见元素的识别,那么一些在场景中不可见的元素,比如声音.颜色等等,ActionScript又会如何识别呢?我们可以通过类型设定来实现,比如: 在脚本面板中输入这样两行代码: var newSound:Sound=new Sound() newSound. 当你在newSound后面按下点号"."时,就会弹出小窗口显示声音的相关属性. 在这种情况下,ActionScript仍然能够识别元素类型的原因在于,上面

Flash MX 2004 ActionScript图文教程(三)

教程 1.3.3ActionScript编辑器简化代码编写的特性 1.3.3.1可见元素类型自动识别 下面我们就通过几个小例子看一看ActionSctipt编辑器所具有的特性,首先是ActionScript在元素命名的一个重要特性,即根据元素名称的后缀来识别器类型. 1)打开"库"面板(快捷键CTLR+L),单击左下角的添加元件按钮,选择元件类型为"影片剪辑",设置影片剪辑名称为Movie_Clip. 2)这时将会进入影片剪辑的编辑状态,在这里随意进行一些绘制,然后