效果如图1 所示
制作过程: 1.新增一个名为 typeSpaceMovie 的电影剪辑
2.在 typeSpaceMovie 新增一图层,添加两个文字区域 /:text1 和 /:text2 . 并设置他们的大小, 和字体,字符大小完全一样。 在变量名前加 /: 表示这是告诉这个变量在主 TimeLine 中也是可用的,而不仅仅是typeSpaceMovie 电影剪辑中的局部变量。
第3节.制作练习场景 效果如图1 所示。实例(源文件)制作过程:
1.新增一个名为 typeSpaceMovie 的电影剪辑
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/fjc/)2.在 typeSpaceMovie 新增一图层,添加两个文字区域 /:text1 和 /:text2 . 并设置他们的大小, 和字体,字符大小完全一样。 在变量名前加 /: 表示这是告诉Flash这个变量在主 TimeLine 中也是可用的,而不仅仅是typeSpaceMovie 电影剪辑中的局部变量。图1
图 1
3.设置text1属性为“动态文本区域,多行,自动换行”。设置 text2属性为“输入文本、多行、自动换行”。
4.回到主场景,引用电影剪辑 typeSpaceMovie 到主场景中, 并在text1中显示原文内容。 引用电影剪辑并将其显示到屏幕上可以使用 attachMovie 来完成这项任务。不过在引用之前,要正确的设置库。 选中库中的某个Symbol(元件),然后在库窗口的Options(选项)菜单中选择Linkage...(联接)。在 Symbol Linkage Properities (符号连接属性)对话框中选择 Export this Symbol (导出这个符号), 然后赋予它一个标志符。 这ActionScript 就能通过这个标着符访问这个被导出的元件了。例如 :我们把电影剪辑 typeSpaceMovie 的标志符 设为 typeSpaceM 再 通 过attachMovie("typeSpaceM","typeSpace",depth); 这条命令将符号 typeSpaceM复制到主场景上,命名为typeSpace,并给其设定一个深度值 depth(整数型变量)。 Flash必须为每一个电影剪辑分配一个深度值。当多个电影在屏幕上重叠时,具有最高深度值的电影剪辑将会显示在最上面。并且同个层只能有一个剪辑,如果尝试使用一个已存在的层次,新的电影剪辑将会取代原有的。
5.整理代码:主场景只有一各关键帧: attachMovie( "typeSpaceM","typeSpace",0 ); loadVariablesNum("English.txt",0); stop();3.6.预览结果,哈!在text1 文字区域显示了 English.txt中的变量, text2文字区域可以进行键盘输入了。到此,练习场景的制作学习完毕。
第4节、菜单选项和成绩判断
预览上一节的成果,好像太单调了点。现在我们将做出类似于 windows 应用程序那样的菜单选项,增添以下效果:
1.让玩家自己可以选择练习内容和时间。
2.甚至可以自己拟定练习的难易程度。
3.能判断玩家每次输入是否正确,并发出提示。
4.统计最后成绩。
4.1 创建声音效果
4.1.1.从flash以外导入声音文件。
通过:文件/导入... ,打开你想要的声音文件,Flash5支持的格式有 .wav 和.mp3。导入后的 .wav 文件会被Flash压缩, 即变成mp3格式。导入后,这个声音文件的一份被压缩的拷贝将出现你的元件库里。 同样, 选取这个声音元件,联接它,为它设一个标志符,使其在 ActionScript 中可用。我们导入了两个声音: error.wav 和 type.wav.
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/fjc/)4.1.2.创建声音对象并播放。必须创建声音对象方可使用。
[next]
error = new Sound() // 创建一个声音对象;
error.attachSound("errorSound"); //将输出符号为errorSound 的声音拷贝给声音对象error;
error.start(begin,LoopNum);//播放声音error,参数begin表示开始 播放的开始时间(单位秒) //参数LoopNum表示循环播放的次数
4.1.2 判断当前玩家输入是否正确;
在主场景中用以下代码判断每次输入是否正确:
var tempText1=text1.charAt(Selection.getBeginIndex()-1);
var tempText2=text2.charAt(Selection.getBeginIndex()-1);
if(tempText1!=tempText2 && textLength!=text2.length)
{ //当前输入错误时应触发的事件;
error.start(0,1); // 报警一次;
textLength=text2.length;//保证每按键一次只判断一次
}