Ok,预备知识到此结束,下面开始我们激动人心的程序吧!
第3节、制作练习场景
效果如图1 所示
制作过程: 1.新增一个名为 typeSpaceMovie 的电影剪辑
2.在 typeSpaceMovie 新增一图层,添加两个文字区域 /:text1 和 /:text2 . 并设置他们的大小, 和字体,字符大小完全一样。 在变量名前加 /: 表示这是告诉Flash这个变量在主 TimeLine 中也是可用的,而不仅仅是typeSpaceMovie 电影剪辑中的局部变量。
第3节.制作练习场景 效果如图1 所示。实例(源文件)制作过程:
1.新增一个名为 typeSpaceMovie 的电影剪辑
2.在 typeSpaceMovie 新增一图层,添加两个文字区域 /:text1 和 /:text2 . 并设置他们的大小, 和字体,字符大小完全一样。 在变量名前加 /: 表示这是告诉Flash这个变量在主 TimeLine 中也是可用的,而不仅仅是typeSpaceMovie 电影剪辑中的局部变量。图1
图 1
3.设置text1属性为“动态文本区域,多行,自动换行”。设置 text2属性为“输入文本、多行、自动换行”。
4.回到主场景,引用电影剪辑 typeSpaceMovie 到主场景中, 并在text1中显示原文内容。 引用电影剪辑并将其显示到屏幕上可以使用 attachMovie 来完成这项任务。不过在引用之前,要正确的设置库。 选中库中的某个Symbol(元件),然后在库窗口的Opti width=471>
图2
4.2.1 背景如图2所示。它主要的功能是作为下面两个电影剪辑menuE和 menuSettingE的背景。另外,还有一个按钮Exit,用于退出此程序。
width=418>
图 3
4.2.2 如上图3:按钮Setting :
width=383>
图 4
4.2.3 图 4显示了电影剪辑menuSettingE的效果。这里就是玩家设定练习时间和选择原文的场面。代码比较简单,就不一一作介绍了。
图 5 typeSpace
4.2.4 图5 显示typeSpace。这才是整个程序的核心。
在这个剪辑中,最重要的是提供了练习的场所和向玩家显示剩余时长。前面提到过函数 getTimer(); 他返回此Flash程序从开始到调用他所经历的时长。因此,在主场景第一帧就要调用一次,在开始练习时又不停的调用,直到二者的差值达到预先设定的时长。
图 6
4.2.5 图 6是本程序最后一个 电影剪辑 showScores;不言而喻,它用于在每次练习结束后返回成绩。
5、场景中帧的划分
把主场景划分为4段循环的帧结构。
4.2.5.1.第一帧,用于初始化全局变量。
fscommand ("fullscreen", "true");
fscommand ("showmenu", "false");
baseDepth = 1;
testDepth = 10;
menuDepth = 2;
menux = 118;//菜单的横坐标
menuy = 102;//菜单的纵坐标
timeBarWidth = 76;//时间棒的总长度
startTimer = false;
typePause = false;
nowTimer = getTimer();//计时一次
showType = "menu"; //显示菜单
menushowFram = true;// 显示背景
backToFram = false;//是否返回到开始界面
loadText = false;//是否开始倒入原文
level = 1;//难度级别为1
text1 = "";
text2 = "";
textLength = 0;
loopNum = 0;
back = false;
again = false;
timeOver = false;
typeSound = new Sound();
typeSound.attachSound("type");
errorSound = new Sound();
errorSound.attachSound("error");
typeSoundPlay = true;time = 3;
errorNum = 0;
speedNum = 0;
choose = new String("normalText");
inputText = choose;
attachMovie("fram", "fram", baseDepth);//显示开始界面的背景
4.2.5.2 第二帧到第三帧;
第2帧设一个标签“mainLoop":
if(loadText==true)
gotoAndPlay("loadNum");//跳到下载原文的循环中
if (showFram == false)
{
fram.removeMovieClip();//把背景从屏幕上抹去
removeMovieClip (showType);//把菜单从屏幕上抹去
attachMovie("typeSpace", "typeSpace", testDepth);
gotoAndPlay ("typeLoop");//跳到练习的场景中
} else
{
attachMovie(showType, showType, menuDepth);//跳到另一个菜单中
}
_root[showType]._x = menux;//设置横坐标
_root[showType]._y = menuy;//设置纵坐标第3帧的代码:
gotoAndPlay("mainLoop");
4.2.5.3第3个循环段:
从第5帧到第6帧。
第5帧标签“typeLoop";
if (backToFram == true)
{ //响应在typeSpace剪辑上的按钮BACK的事件返回到开始界面
removeMovieClip ("typeSpace");
gotoAndPlay (1);
}
if(again==true)//响应在typeSpace剪辑上的按钮AGAIN的事件
{ //场景不变,重复上一次的练习
removeMovieClip("showScores");
text1.scroll=1;
text2="";
loopNum=0;
again=false;
}//以下的代码是用于练习过程中实时判断,检测我们分为几个小节进行分析。
1.让原文文本向上卷动。
if(Key.isDown(Key.PGDN))
{
text1.scroll+=1;
}
if(Key.isDown(Key.PGUP)){
text1.scroll-=1;
}
2.排除SHIFT键码错误。
SHIFT用于大小写转换,但他也有自己的键码值。所以我们必须屏蔽掉SHIFT的返回值:
if(Key.getCode() !=Key.SHIFT )
{//屏蔽掉SHIFT的返回值后
var tempText1=text1.charAt(Selecti;
ranFile=random(4);
if(choose=="normalText")
{ //导入文本的路径及其名称
inputTextinputText= choose add "/" add level add random(4) add ".txt";
}
elseinputText=choose add "/" add random(4) add ".txt";loadVariablesNum(inputText,0);
第9帧 标签“empty"
第10帧 标签“loadNumEnd"
if(text1=="load...")
{
gotoAndPlay("empty");
trace("gotoAnd");
}
else
{
loadText=false;
trace("load over");
gotoAndPlay("mainLoop");
}
5.结束语
到此程序分析完毕。全部代码总共也只有100行左右。发布成的可执行文件大小也不过30k左右。让人想到了在可爱的dos时代,一张软盘行遍天下的历史。Flash编程的特点就是要兼顾帧和层的概念,控制好帧的移动,就控制了程序的走向;掌握了“层”就是掌握了Flash动画技术的精髓。
选择5ucms.org 选择未来
上一篇:5ucms教程,用Flash MX组件制作测验题 下一篇:5ucms培训,快闪手册——Alt键的妙用 |
|
本站声明:本网站所载文章等内容,目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权及其它问题,请在30日内与本网联系(Email:3876307#qq.com),我们将在第一时间删除内容。若原创内容转载请注明出处。 5ucms插件,实用Flash应用程序—打字练习的关键词: |