520 likes | 658 Views
计算机基础与实训教材系列. 《 中文版 FlashCS3 实训教程 》. 第 8 章. 创建交互式动画. 学 习 目 标. 本章主要介绍了 ActionScript 常用的一些命令及其使用。通过本章的学习,了解 ActionScript2.0 和 ActionScript3.0 的主要区别,熟练掌握常用控制语句、 getURL 语句、 startDrag 语句和声音控制语句的使用。. 本 章 重 点. 常用控制语句 超链接语句 getURL startDrag 语句 声音控制语句 时间获取语句. 8.1 常用的控制语句.
E N D
计算机基础与实训教材系列 《中文版FlashCS3实训教程》
第8章 创建交互式动画
学 习 目 标 • 本章主要介绍了ActionScript常用的一些命令及其使用。通过本章的学习,了解ActionScript2.0和ActionScript3.0的主要区别,熟练掌握常用控制语句、getURL语句、startDrag语句和声音控制语句的使用。
本 章 重 点 • 常用控制语句 • 超链接语句getURL • startDrag语句 • 声音控制语句 • 时间获取语句
8.1 常用的控制语句 • Flash CS3中可以使用的命令有上千条,在此只介绍经常使用的一些命令,利用这些命令可以定义动画的一些简单交互控制。 • Flash CS3中有两个编码器: • 一个是ActionScript2.0编码器, • 一个是ActionScript3.0编码器。 • 尽管Adobe建议使用ActionScript3.0,但用户还可以继续使用ActionScript2.0,下面介绍ActionScript2.0中主要使用的命令。
在【动作】面板中,【全局函数】|【时间轴控制】和【全局函数】|【浏览器/网络】类别中提供了许多动作命令,通过对这些命令的使用可以创建出交互式动画,如图8-1所示。在【动作】面板中,【全局函数】|【时间轴控制】和【全局函数】|【浏览器/网络】类别中提供了许多动作命令,通过对这些命令的使用可以创建出交互式动画,如图8-1所示。 图8-1 常用控制语句
【全局函数】|【时间轴控制】类别提供如下动作命令:gotoAndPlay:将播放头转到场景中指定的帧并从该帧开始播放。如果末指定场景,则播放头将转到当前场景中的指定帧。例如gotoAndPlay(“scene2”,7)表示跳转到scene2场景的第7帧并开始播放。gotoAndStop:将播放头转到场景中指定的帧并停止播放。如果末指定场景,则播放头将转到当前场景中的帧。例如gotoAndStop(50)表示跳转到当前场景的第50帧并停止播放。【全局函数】|【时间轴控制】类别提供如下动作命令:gotoAndPlay:将播放头转到场景中指定的帧并从该帧开始播放。如果末指定场景,则播放头将转到当前场景中的指定帧。例如gotoAndPlay(“scene2”,7)表示跳转到scene2场景的第7帧并开始播放。gotoAndStop:将播放头转到场景中指定的帧并停止播放。如果末指定场景,则播放头将转到当前场景中的帧。例如gotoAndStop(50)表示跳转到当前场景的第50帧并停止播放。
nextFrame:将播放头转到下一帧并停止。nextScene:将播放头移到下一场景的第1帧并停止。play:在时间轴中向前移动播放头。prevFrame:将播放头转到前一帧并停止。如果当前帧为第1帧,则播放头不移动。prevScene:将播放头移到前一场景的第1帧并停止。stop:停止当前正在播放的swf文件。此动作最通常的用法是用按钮控制动画。stopAllSounds:在不停止播放头的情况下,停止swf文件中当前正在播放的所有声音。nextFrame:将播放头转到下一帧并停止。nextScene:将播放头移到下一场景的第1帧并停止。play:在时间轴中向前移动播放头。prevFrame:将播放头转到前一帧并停止。如果当前帧为第1帧,则播放头不移动。prevScene:将播放头移到前一场景的第1帧并停止。stop:停止当前正在播放的swf文件。此动作最通常的用法是用按钮控制动画。stopAllSounds:在不停止播放头的情况下,停止swf文件中当前正在播放的所有声音。
但是,在ActionScript3.0中,这些命令成为了flash.display包中的MovieClip类的方法,如图8-2所示。但是,在ActionScript3.0中,这些命令成为了flash.display包中的MovieClip类的方法,如图8-2所示。 图8-2 ActionScript3.0中命令位置
【全局函数】|【浏览器/网络】类别提供如下动作命令:fscommand:发送fscommand命令到动画中。表8-1列出了可对Flash动画进行控制的fscommand命令。
表中描述的命令在Web 播放器中都不可用。 所有这些命令在独立的应用程序(例如,放映文件)中都可用。 只有 allowscale 和 exec 在测试影片播放器中可用。
例如,我们可以制作两个按钮,分别是控制影片全屏播放的按钮一和控制影片退出全屏播放的按钮二,按钮上的代码如下:按钮一:on (release) { fscommand("fullscreen", true);}按钮2:on (release) {fscommand("fullscreen", false);}
getURL:用getURL动作为动画添加链接。单击该链接,就会在指定的窗口中打开指定的网页,如getURL(“hltp://www.baidu.com”)就是链接到baidu网站;也可以利用该命令打开指定的文件,但文件必须提供文件扩展名。loadMovie:在播放原始SWF文件的同时将SWF文件或JPEG文件加载到Flash Player中。loadMovieNum:在播放原来加载的SWF文件的同时将SWF文件或JPEG文件加载到Flash Player中的某个级别。
URL是Uniform Resource Locator(统一资源定位器)的缩写,也就是网络资源的地址。要测试设置效果,指定的URL绝对路径必须存在(如http://www.baidu.comm)。要打开的文件必须存放在指定的位置。loadVariable从外部文件(例如文本文件,或由CGI脚本、ASP、PHP或Perl脚本生成的文本)中读取数据,并设置目标影片剪辑中变量的值。此动作还可用于使用更新SWF文件中的变量。制作Flash聊天室或Flash论坛就需要此动作。
loadVariablesNum:从外部文件(例如文本文件,或由CGI脚本、ASP、PHP或Perl脚本生成的文本)中读取数据,并设置FlashPlayer级别中变量的值。此函数还可用于使用新值更新活动SWF文件中的变量。unloadMovie:从FlashPlayer中删除通过loadMovie()加载的影片剪辑。unloadMovieNum:从FlashPlayer中删除通过loadMovieNum()加载的影片。loadVariablesNum:从外部文件(例如文本文件,或由CGI脚本、ASP、PHP或Perl脚本生成的文本)中读取数据,并设置FlashPlayer级别中变量的值。此函数还可用于使用新值更新活动SWF文件中的变量。unloadMovie:从FlashPlayer中删除通过loadMovie()加载的影片剪辑。unloadMovieNum:从FlashPlayer中删除通过loadMovieNum()加载的影片。
但是,在ActionScript3.0中,fscommand成为了flash.system包中的方法;getURL成为了flash.net包中的navigateToUR方法;loadMovie和loadMovieNum全局函数由flash.display包中的Loader类所替代;loadVariable和loadVariableSNum,由flash.net包中的URLLoader类所代替,如图8-3、8-4、8-5、8-6所示。但是,在ActionScript3.0中,fscommand成为了flash.system包中的方法;getURL成为了flash.net包中的navigateToUR方法;loadMovie和loadMovieNum全局函数由flash.display包中的Loader类所替代;loadVariable和loadVariableSNum,由flash.net包中的URLLoader类所代替,如图8-3、8-4、8-5、8-6所示。
图8-4 getURL的位置 图8-3 fscommand的位置
图8-5 loadMovie和loadMovieNum的位置 图8-6 loadVariable和loadVariableSNum的位置
【例8-1】常用控制语句。本动画实例的目的是:通过对一个有声动画添加按钮并设置动作,来实现最基本的交互效果,以随时控制动画的播放, 要实现的控制有:单击【播放】按钮播放动画;单击【停止】按钮停止播放;单击【重新开始】按钮重新播放;单击【下一帧】按钮显示下一帧内容;单击【前一帧】按钮返回上一帧内容;单击【声音】按钮关闭音效。实例效果如图8-7所示。
8.2 超链接语句getURL • getURL命令的语法格式为 • getURL(url[,window[,“method”]]),作用是将来自特定URL的文档加载到指定的窗口中,或将变量传递到位于所定义的URL的另一个应用程序中。使用此动作时一定要确保欲加载的文件位于指定的位置。
如果要使用绝对URL(例如http://www.baidu.com),则需要网络连接。该命令主要包括如下参数:url:可从该处获取文档的URL。window:可选参数,指定文档应加载到其中的窗口或HTMI框架。可以输入特定窗口的名称,或从下面的保留目标名称中选择。如果要使用绝对URL(例如http://www.baidu.com),则需要网络连接。该命令主要包括如下参数:url:可从该处获取文档的URL。window:可选参数,指定文档应加载到其中的窗口或HTMI框架。可以输入特定窗口的名称,或从下面的保留目标名称中选择。
_self指定当前窗口中的当前框架;_blank指定一个新窗口;_parent指定当前框架的父级;_top指定当前窗口中的顶级框架;method:用于发送变量的两种方法:GET或POST方,如果没有参数,则省略此参数。GET方式会将变量添加到URL名称的后面,常用于发送短字符变量;POST方式将变量作为一个单独的标题来发送,常用于发送长字符变量。_self指定当前窗口中的当前框架;_blank指定一个新窗口;_parent指定当前框架的父级;_top指定当前窗口中的顶级框架;method:用于发送变量的两种方法:GET或POST方,如果没有参数,则省略此参数。GET方式会将变量添加到URL名称的后面,常用于发送短字符变量;POST方式将变量作为一个单独的标题来发送,常用于发送长字符变量。
【例8-2】getURL应用。下面的实例使用getURL动作实现不同的超级链接,包括打开网页、打开指定的文件玩纸牌游戏及发送邮件等。单击“链接到bai.com网站”,只要已经接入Internet,就会使用新窗口登录到网页;单击“玩纸牌游戏”图标,出现文件下载对话框,单击【打开】按钮,就可以玩纸牌游戏了;单击【给我写信】图标,就会启动默认的邮件程序(通常为OutlookExpess),让用户写新邮件。实例效果如图8-10所示。【例8-2】getURL应用。下面的实例使用getURL动作实现不同的超级链接,包括打开网页、打开指定的文件玩纸牌游戏及发送邮件等。单击“链接到bai.com网站”,只要已经接入Internet,就会使用新窗口登录到网页;单击“玩纸牌游戏”图标,出现文件下载对话框,单击【打开】按钮,就可以玩纸牌游戏了;单击【给我写信】图标,就会启动默认的邮件程序(通常为OutlookExpess),让用户写新邮件。实例效果如图8-10所示。
8.3 startDrag语句 • 在本书第7章7.4.4节中我们已经详细讲了startDrag语句的使用,下面我们再通过一个具体的实例来加深对startDrag语句的理解。 • 【例8-3】探照灯效果。本动画实例的目的是制作鼠标跟随效果。实例效果如图8-12所示。
8.4 声音控制语句 • 在Flash中能对动画中的声音进行相应控制,打开【ActionScript 2.0类】|【媒体】|【Sound】其声音控制语句如图8-19所示。 图8-19 声音控制语句
其常用的控制语句如下:new Sound该语句用于建立声音对象。其语法格式如下:new Sound();new Sound(target);其中,target表示要加入声音的MovieClip instance名称,其写法如下:firstSound= new Sound();//建立名为firstSound的声音文件
Sound.start该语句用于开始播放声音对象。其语法格式如下:firstSound.start();firstSound .start([secondOffset], [loops]);参数分别为:secondOffset ― 可选,通过它可以从特定点开始播放声音。例如,如果用户有一个 30 秒的声音,而用户希望该声音从中间开始播放,可将 secondOffset 参数指定为 15。并非声音延迟 15 秒,而是从 15 秒标记处开始播放。loops ―可选,通过它可以指定声音应该连续播放的次数。如果声音是声音流,则此参数不可用。
Sound.stop该语句用于停止当前播放的所有声音(如果未指定参数),或者只停止播放在参数中指定的声音。其语法格式如下:firstSound.stop();firstSound.stop([linkageID]);参数为:linkageID― 可选, 指定特定声音停止播放的参数。参数必须置于引号 (“ ”) 之中。
Sound.setVolume该语句用于设置声音的大小。其语法格式如下:firstSound.setVolume(value);参数为:value― ―个从 0 到 100 之间的数字,表示音量级别。100 为最大音量,而 0 为没有音量。默认设置为 100。
Sound.attachSoundfirstSound.attachSound(id);该语句将在 id 参数中指定的声音附加到指定的 Sound 对象。该声音必须位于当前 SWF 文件的库中,并且必须已经在【链接属性】对话框中指定为导出。必须调用 Sound.start() 才能开始播放此声音。为了确保从 SWF 文件中的任何场景都可以控制声音,请将声音放置在 SWF 文件的主时间轴上。参数为:id ― 库中导出声音的标识符。该标识符位于【链接属性】对话框。
【例8-4】下面我们来制作一个通过按钮控制声音的实例,通过这个实例加深对声音控制语句的理解。当用户单击绿色的按钮时,即可播放音乐,单击红色的按钮,即可停止音乐。实例效果如图8-20所示。【例8-4】下面我们来制作一个通过按钮控制声音的实例,通过这个实例加深对声音控制语句的理解。当用户单击绿色的按钮时,即可播放音乐,单击红色的按钮,即可停止音乐。实例效果如图8-20所示。
8.5 时间获取语句 • 在Flash中使用时间获取语句,可对电脑中的系统时间进行提取,以实现某些特定的功能(如实现时间显示功能),打开【ActionScript 2.0类】|【核心】|【Date】,其时间获取语句如图8-25所示。
其常用的控制语句如下:new Date该语句用于构造一个新的 Date 对象,该对象将保存指定的日期和时间。 • 其语法格式如下:new Date();new Date([yearOrTimevalue], [month], [date], [hour], [minute], [second], [millisecond]);Date() 构造函数使用最多七个参数(year、month、... millisecond);
参数为:yearOrTimevalue: ―可选,如果指定了其它参数,则此数字表示年份(如 1965);否则,它表示时间值。如果该数字表示年份,则 0 至 99 之间的值表示 1900 年至 1999 年;否则,必须指定表示年份的所有 4 位数字,如2009。如果该数字表示时间值(未指定任何其它参数),则为 GMT 时间 1970 年 1 月 1 日 0:00:00 之前或之后的毫秒数;负值表示 GMT 时间 1970 年 1 月 1 日 0:00:00“之前”的某个时间,而正值表示该时间之后的某个时间。
month―可选,这个参数表示月份, 取值范围为0(一月)到 11(十二月)之间的整数。date―可选,这个参数表示日期,取值范围为1 到 31 之间的整数。hour―可选,这个参数表示小时数,取值范围为0(午夜)到 23(晚上 11 点)之间的整数。
minute―可选,这个参数表示分钟数,取值范围为0 到 59 之间的整数。second―可选,这个参数表示秒数,取值范围为0 到 59 之间的整数。millisecond―可选,取值范围为0 到 999 之间的整数(毫秒)。
如:检索当前日期和时间var now_date:Date = new Date();trace(now_date);如:为 Mary 的生日(1974 年 8 月 12 日)创建一个新的 Date 对象(由于月份参数从零开始,所以此示例使用 7 而不是 8 表示月份):var maryBirthday:Date = new Date(74, 7, 12);trace(maryBirthday); Date.getYear
按照本地时间返回指定的 Date 对象的年份。这里的年份是指完整的年份值减去 1900。 • 其语法格式如下:today_date.getYear();如:var today_date:Date = new Date(2004, 4);trace(today_date.getYear());//输出104,表示2004年Date.getFullYear
按照本地时间返回指定的 Date 对象中的完整年份值(一个 4 位数,例如 2000)。 • 其语法格式如下:today_date.getFullYear();如:var today_date:Date = new Date();trace(today_date.getFullYear());//输出2009Date.getMonth
按照本地时间返回指定的 Date 对象中的月份值(0 代表一月,1 代表二月,依此类推)。 • 其语法格式如下:today_date.getMonth();如:var today_date:Date = new Date();trace(today_date.getMonth());Date.getDate
按照本地时间返回指定的 Date 对象中表示月中某天的值(1 到 31 之间的整数)。 • 其语法格式如下:today_date.getDate();如:var today_date:Date = new Date();trace(today_date.getDate());Date.getDay
按照本地时间返回指定的 Date 对象中表示星期几的值(0 代表星期日,1 代表星期一,依此类推)。 • 其语法格式如下:today_date.getDay();如:var today_date:Date = new Date();trace(today_date.getDay());Date.getHours
按照本地时间返回指定的 Date 对象中的小时值(0 到 23 之间的整数)。 • 其语法格式如下:today_date.getHours();如:var today_date:Date = new Date();trace(today_date. getHours ());Date.getMinutes
按照本地时间返回指定的 Date 对象中的分钟值(0 到 59 之间的整数)。 • 其语法格式如下:today_date.getMinutes();如:var today_date:Date = new Date();trace(today_date.getMinutes());Date.getSeconds按照本地时间返回指定的 Date 对象中的秒钟值(0 到 59 之间的整数)。其语法格式如下:today_date.getSeconds();如:var today_date:Date = new Date();trace(today_date.getSeconds());Date.getMilliseconds
按照本地时间返回指定的 Date 对象中的毫秒数(0 到 999 之间的整数)。 • 其语法格式如下:today_date. getMilliseconds ();如:var today_date:Date = new Date();trace(today_date.getMilliseconds());Date.getTime • 返回指定的 Date 对象自 1970 年 1 月 1 日午夜(通用时间)以来的毫秒数。其语法格式如下:today_date. getTime();如:var today_date:Date = new Date();trace(today_date.getTime());Date.getTimezoneOffset