乔嘉琦+任冬玲
(西京学院经济管理系国际经济与贸易1501班,陕西 西安710123)
【摘 要】FLASH作为目前应用最广泛的交互式矢量动画制作软件,被广泛应用于动画制作、游戏设计、网页设计、广告设计等领域。多媒体是用语词和画面共同呈现材料,比单一的用语词呈现更能促进学生对科学解释的理解。所以FLASH软件应用于教学多媒体的制作势在必行,但是教学人员的主要任务在教学设计,而非FLASH技术本身,故本文总结了几点用FLASH制作多媒体的感悟,希望能让教学人员在技术上省力,在教学设计上加力。
【关键词】FLASH;多媒体;ActionScript 3.0
多媒体指用语词和画面共同呈现材料。使用多媒体的基本理论前提为:采用语词和画面的组合呈现比只采用语词的单一呈现更容易使学习者理解科学解释[1]。多媒体制作软件之一——FLASH是目前应用最广泛的交互式矢量动画制作软件,是一个功能强大的多媒体集成开发环境,被广泛应用于动画制作,游戏设计等领域[2]。FLASH的主要优点是动画作品体积小,动画效果非常精致。FLASH强大的媒体兼容能力,矢量动画能力,面向对象的程序设计语言,鲜明的网络特性,强大的跨平台特性使其在多媒体制作上魅力倍增。特别是FLASH可以在嵌入式系统中应用,尤其是在智能手机上 [3],这为移动学习的发展提供了良好的契机。
一、交互的基础——DOM事件模型
利用FLASH强大的交互功能制作出的交互性多媒体能带给学生更多的感官体验,能增强学生的学习动机。但是如果要在FLASH中做出完美而且准确的交互动画,就须明白FLASH的交互原理——DOM事件模型。ActionScript 3.0(以下简称AS3.0)是面向对象的程序设计语言,采用了一个统一的、基于文档对象模型(DOM)第三级事件规范的事件模型[4]。DOM事件模型主要包含三个概念:事件流、事件对象和事件侦听器。
(一)事件流。事件流是事件实例在显示对象层次结构中的穿行过程。当程序触发任何一个事件时,Flash Player就会产生一个相应的事件实例,这个实例会将自己“广播”给程序的所有可接收事件的对象。如果该对象(触发程序的显示对象)处于显示对象层次结构中,则Flash Player将事件沿着层次结构穿行到事件目标,完成后有回溯到Flash Player,这个过程就是事件流。事件流分为三个阶段:捕获阶段、目标阶段和冒泡阶段。
(二)事件对象。事件对象是承载事件信息以及一些事件处理方法的对象。当AS 3.0中发生了事件并且触发了事件调度的调用时,消息就会被发送到事件的所有接收者,该消息以事件对象的形式发送。例如用户的输入会产生鼠标事件(MouseEvent)和键盘事件(KeyboardEvent)。
(三)事件偵听器。事件侦听器解决的是如何响应事件的问题。具有IEventDispatcher接口的类都具有事件侦听的能力。要使一个对象侦听某个事件,就要使用addEventListener方法注册事件侦听器。具体的代码格式不再细述。
二、FLASH中的ENTER_FRAME事件
下面的几个问题几乎都牵涉到了ENTER_FRAME事件,ENTER_FRAME事件是FLASH中典型的延迟循环模式,指每经过一帧的间隔就会自动触发一次的事件,即使播放头已经停止播放也会触发。ENTER_FRAME事件流不经过显示对象的层次关系而直接发送给侦听器对象,即所有的显示对象几乎同时接收到ENTER_FRAME事件。
三、FLASH中声音的处理技巧
声音在多媒体中的应用非常广泛。例如在动画演示时加入配套的音效,可让学生产生身临其境的感觉,调动学生学习的积极性。FLASH处理声音的方法有三种。
①将库中的声音文件放置在时间轴上,并设置声音的同步方式,多用于设置按钮音效。这种方法简单直观,但是不能在AS 3.0中控制播放,并总与时间轴绑定,缺少灵活性。②将声音链接为AS 3.0导出后,在AS 3.0中使用它,多用于加入游戏音效。设置方式为:选中一个声音文件,右击弹出快捷菜单,选择“属性”,在弹出的对话框中勾选“为AS 3.0导出”。它会提示自动创建了一个新类,就是Dysound,声音文件已被封装在这个类中,可在AS 3.0中编程控制。③通过导入外部文件的方式使用声音。即声音不在库中,通过一个URL,在运行时加载。外部导入声音文件的优势在于其大大减小了SWF文件的大小;其次,外部载入声音的音质要比时间轴上的音质好很多;第三是可以在AS 3.0实现对声音的完美控制。
四、外部导入视频与背景音乐冲突的BUG的解决
视频以其直观和丰富的特性在多媒体中占有重要地位,但在FLASH中导入外部视频时,易产生与现有音乐冲突的BUG,即几个声音同时响起,下面说明解决方法。
例:要做一个交互结构的多媒体(nav1_mc、nav2_mc、nav3_mc为影片剪辑(以下简称MC)的实例名,封装在info_mc中)。
目的有二,一是当“活动(nav1_mc)”侦听到鼠标的“click”事件时,会载入一段外部视频,这时要暂停背景音乐。二是当关闭视频时,背景音乐重新响起。
第一,加载外部声音文件为背景音乐;
第15-26行:当单击外面nav3_mc载入视频时,关掉背景音乐。
第26行:是让info_mc侦听opensound的循环侦听,opensound函数的行为是当info_mc完全关闭时打开背景音乐播放控制与状态。
第二,导入外部视频文件(.flv格式);
第29-31行:当单击外面的close_mc(视频关闭剪辑的实例名)时关闭视频的播放。视频的关闭使info_mc处于完全关闭的状态,故它会侦听到opensound的循环侦听,背景音乐随之响起;
第43-47行:当单击外面的nav1_mc时停止播放视频并移除nav3_mc的侦听。
到此就实现了外部导入视频与背景音乐的完美切换。这个例子不仅说明了如何实现外部导入视频与背景音乐的切换,而且也说明了如何实现声音与声音的切换,视频与视频的切换。
五、影片剪辑的倒播
多媒体动画在播放时,想要回放部分动画,就需使MC倒播。MC的倒播是利用prevFrame()(上一帧)函数、nextFrame()(下一帧)函数及ENTER_FRAME事件实现的。
例:对红色方块做如图9所示的补间动画,效果为:当单击前进按钮(ballGo)时,红色方块向右移动,当单击后退按钮(ballBack)时,红色方块向左移动。
当ballGo按钮侦听到鼠标的click事件时,舞台也会侦听到ENTER_FRAME事件,红色方块就会产生frameHandler1()函数所定义的行为——红色方块向右移动,此行为将持续到删除舞台对ENTER_FRAME事件的侦听为止。
当ballBack按钮侦听到鼠标的click事件时,舞台也会侦听到ENTER_FRAME事件,红色方块就会产生frameHandler1()函数所定义的行为——红色方块向左移动,此行为将持续到删除舞台对ENTER_FRAME事件的侦听为止。
六、利用trace语句排除运行时错误
程序错误有两种,一种是语法错误,编译时提示编译错误并列出错误所在的位置。另一种是运行错误,编译通过了,但是由于某些程序的邏辑错误或者其他不确定的原因无法得到预期的效果,从而造成的各种各样的程序错误。在程序运行时,某些逻辑错误并不会使Flash Player抛出任何异常。这时可使用trace语句,跟踪代码的执行,输出一些关键变量的值,看是否与预期的相符,直到追溯到错误的发生地。
例:在一个练习打字的游戏中,每个字只有三次输入机会,若三次机会用完后还没有打对该字,那么得复习该字后才能再继续打字游戏。但在测试中发现,玩家可以连续的进行打字,没有次数的限制,这时可以用trace语句跟踪代码的执行。
首先在打字次数自减一的代码之后添加trace语句。
chanceCount--;
trace(“chanceCount=”+chanceCount);
这样在测试的时候,就会在每次打字次数减一时输出当前所剩的次数。测试影片,看是否每次打错之后都输出了所剩的次数,假如没有任何输出,那就说明这两行代码没有被执行。
上述几点都是利用FLASH软件在制作多媒体时常遇到的几个问题,特罗列出来,希望能对正遇到这几个问题的同仁们一点帮助。
作者简介:乔嘉琦(1998—),男,山西大同人,国际经济与贸易1501班学生。
任冬玲(1982—),男,山西大同人,讲师职称,硕士学位,研究方向为物流工程与管理。
【参考文献】
[1]理查德.梅耶.《多媒体学习》,商务印书馆,2006(11).
[2] [3]肖刚.《Flash游戏编程教程》,清华大学出版社,2009(01).
[4]Roger Braunstein.《ActionScript 3.0宝典(第二版)》,清华大学出版社, 2012(01)