Flash动作脚本技术FAS程序设计项目化教程项目七金苑五笔打字训练系统.docx
《Flash动作脚本技术FAS程序设计项目化教程项目七金苑五笔打字训练系统.docx》由会员分享,可在线阅读,更多相关《Flash动作脚本技术FAS程序设计项目化教程项目七金苑五笔打字训练系统.docx(46页珍藏版)》请在冰点文库上搜索。
Flash动作脚本技术FAS程序设计项目化教程项目七金苑五笔打字训练系统
项目七金苑五笔打字训练系统
7.1项目教学目标
掌握组合下拉列表框组件、单选按钮组件、复选框组件和数字显示组件的使用。
掌握组件的监听事件的处理
掌握for…in循环的使用
掌握组件焦点的控制
掌握数组的使用
7.2项目操作过程
(1)第1步:
启动FlashProfession8,选择菜单“文件→新建”命令,在弹出的“新建文档”窗口中,选择“常规”选项卡的“Flash文档”选项,在新建的Flash文档中,再选择菜单“文件→保存”命令,在“另存为”窗口的“文件名”文本框中输入“jywb”,再单击“保存”按钮。
(2)第2步:
选中“舞台”,单击鼠标右键,在快捷菜单中选择“文档属性”,在“标题”文本框中输入“金苑五笔打字训练系统”,在“描述”文本框中输入“金苑五笔打字训练系统用于训练学生的五笔打字能力,以提高就业竞争力”,在“尺寸(宽)”文本框中输入“800”,在“尺寸(高)”文本框中输入“600”,设置完成后如图7-1所示。
图7-1jywb文档设置
(3)第4步:
双击图层面板中的“图层1”,将“图层1”更名为“背景层”。
(5)第5步:
选择菜单“窗口→库”命令,单击选择“库”面板中图形“Background”。
(6)第6步:
按住鼠标左键将图形“Background”拖放至舞台中,选择图形“Background”的属性面板,在“宽”文本框中输入“800”,在“高”文本框中输入“600”,在“X”文本框中输入“0”,“Y”文本框中输入“0”。
(7)第7步:
单击图层面板的中的
按钮,添加一个新图层,并命名为“组件层”。
(8)第8步:
在“背景层”第“1”帧的舞台上添加静态文本对象,静态文本对象的属性设置如表7-1所示。
表7-1文本对象属性列表
文本类型
文本内容
X
Y
字体
字号
静态文本
用户信息:
125
175
幼圆
22
静态文本
姓名:
86
228
楷体
20
静态文本
班级:
82
267
楷体
20
静态文本
性别:
82
314
楷体
20
静态文本
训练设置:
491
175
幼圆
22
静态文本
请选择你要训练的内容:
361
225
楷体
20
静态文本
请选择你要挑战的级别:
356
340
楷体
20
(9)第9步:
选择菜单“窗口→组件”命令,在“组件”窗口中用鼠标双击“UserInterface”展开列表选择,按住鼠标左键将二个“TextInput”输入文本框组件放置到舞台上,属性设置如下表的7-2所示。
表7-2文本框组件属性设置
组件类型
组件命名
X
Y
TextInput
usernametxt
147
228
TextInput
usernumbertxt
146
268
(10)第10步:
选择菜单“窗口→组件”命令,在“组件”窗口中用鼠标双击“UserInterface”展开列表选择,按住鼠标左键将一个“ComboBox”组合下拉列表框组件放置到舞台上,属性设置如下表的7-3所示。
ComboBox知识请阅读项目相关理论知识7.3.1。
表7-3组合下拉列表框组件属性设置
组件命名
X
Y
Editable
Labels
userclassCombo
145
316
false
金融08
(1),信息08
(1),电商08
(1),会计08
(1),英语08
(1)
(11)第11步:
选择菜单“窗口→组件”命令,在“组件”窗口中用鼠标双击“UserInterface”展开列表选择,按住鼠标左键将二个“RadioButton”单选按钮放置到舞台上,属性设置如下表的7-4所示。
RadioButton知识请阅读项目相关理论知识7.3.2。
表7-4单选按钮组件属性设置
组件类型
组件命名
X
Y
Label
groupName
Selected
RadioButton
genderRadioMM
141
358
MM
gender
true
RadioButton
genderRadioGG
146
268
GG
gender
false
(12)第12步:
选择菜单“窗口→组件”命令,在“组件”窗口中用鼠标双击“UserInterface”展开列表选择,按住鼠标左键将六个“CheckBox”复选框组件放置到舞台上,属性设置如下表的7-5所示。
CheckBox理论知识请阅读项目相关理论知识7.3.3。
表7-5复选框组件属性设置
组件类型
组件命名
X
Y
Label
Selected
CheckBox
train1CheckBox
499
221
一级简码
true
CheckBox
Train2CheckBox
499
250
二级简码
false
CheckBox
trainbjCheckBox
499
277
百家姓
false
CheckBox
trainywxxCheckBox
583
221
小字字母
false
CheckBox
trainywdxCheckBox
583
250
英文大写
false
CheckBox
trainszCheckBox
583
277
数字
false
(13)第13步:
选择菜单“窗口→组件”命令,在“组件”窗口中用鼠标双击“UserInterface”展开列表选择,按住鼠标左键将一个“NumericStepper”数字步进显示组件放置到舞台上,属性设置如下表的7-6所示。
NumericStepper理论知识请阅读项目相关理论知识7.3.4。
表7-6数字步进显示组件属性设置
组件命名
X
Y
maximum
minimum
stepSize
gradeStepper
488
354
6
1
1
(14)第14步:
选择菜单“窗口→公用库→按钮”命令,在“按钮”窗口中按住鼠标左键将一个“barcappedpurple”按钮放置到舞台上,在“X”文本框中输入“347”,“Y”文本框中输入“479”。
(15)第15步:
用鼠标选择“第一帧”,单击鼠标右键,在快捷菜单中选择“动作”,在“动作”面板输入如下代码:
//用户信息变量初始化
varusername:
String="金院小小";
varusernumber:
String="6002008001"
varusergender:
String="MM";
varuserclass:
String="金院
(1)班";
varusergrade:
String="菜鸟级";
//训练级别变量初始化
varusertrainbj:
Boolean=false;
varusertrainyj:
Boolean=false;
varusertrainej:
Boolean=false;
varusertrainywxx:
Boolean=false;
varusertrainywdx:
Boolean=false;
varusertrainsz:
Boolean=false;
//生成单击按钮对象
varobjRadio=newObject();
//单击按钮事件点击处理
objRadio.click=function(evt)
{
usergender=evt.target.label;
}
//为单击按钮添加监听
genderRadioGG.addEventListener("click",objRadio);
genderRadioMM.addEventListener("click",objRadio);
//生成组合下拉列表框对象
varobjCombo=newObject();
//组合下拉列表框变化事件处理函数
objCombo.change=function(evt)
{
userclass=evt.target.labels[evt.target.selectedIndex];
}
//生成数字步进器对象
varobjStepper=newObject();
//数字步进器变化事件处理函数
objStepper.change=function(evt)
{
//判断用户的选择级别
switch(evt.target.value)
{
case1:
{
usergrade="菜鸟级";
break;
}
case2:
{
usergrade="江湖级";
break;
}
case3:
{
usergrade="高手级";
break;
}
case4:
{
usergrade="大师级";
break;
}
case5:
{
usergrade="精灵级";
break;
}
case6:
{
usergrade="梦幻级";
break;
}
}
}
//为组合下拉列表框添加监听
userclassCombo.addEventListener("change",objCombo);
//为步进器添加监听
gradeStepper.addEventListener("change",objStepper);
stop();
(16)第16步:
用鼠标选择“barcappedpurple”按钮,单击鼠标右键,在快捷菜单中选择“动作”,在“动作”面板输入如下代码:
on(release)
{
//获得用户的姓名
username=usernametxt.text;
//获得用户的学生
usernumber=usernumbertxt.text;
//获得用户的训练内容
if(_root.train1CheckBox.selected)
usertrainyj=true;
if(_root.train2CheckBox.selected)
usertrainej=true;
if(_root.trainbjCheckBox.selected)
usertrainbj=true;
if(_root.trainywxxCheckBox.selected)
usertrainywxx=true;
if(_root.trainywdxCheckBox.selected)
usertrainywdx=true;
if(_root.trainszCheckBox.selected)
usertrainsz=true;
play();
}
(17)选择菜单“控制菜单→测试影片”命令,影片结果如图7-2所示。
图7-2影片首界面
(18)第17步:
将鼠标移动至“时间轴”面板“背景层”第2帧处,选中第“2”帧,单击鼠标右键,在快捷菜单中选择“插入空白关键帧”。
(19)第18步:
在“背景层”第“2”帧的舞台上添加静态文本对象,静态文本对象的属性设置如表7-7所示。
表7-7文本对象属性列表
文本类型
文本内容
X
Y
字体
字号
静态文本
输入区:
158
526
隶书
16
静态文本
生命值:
417
526
隶书
16
静态文本
挑战者:
0
566
黑体
18
静态文本
挑战内容:
334
567
黑体
18
静态文本
挑战级别:
631
567
黑体
18
(20)第19步:
在“背景层”第“2”帧的舞台上添加动态文本对象,动态文本对象的属性设置如表7-8所示。
表7-8文本对象属性列表
文本类型
文本命名
X
Y
字体
字号
动态文本
userinformation
68
562
隶书
16
动态文本
trainproject
416
562
隶书
16
动态文本
gradeinformation
712
565
隶书
16
(21)第20步:
选择菜单“窗口→库”命令,将表7-9所示影片剪辑拖放到舞台,相应的属性设置也如表7-9所示。
表7-9影片剪辑属性列表
影片剪辑实例名称
X
Y
颜色
background_scenicspot
-47
-5
Alpha:
30%
wbzgb
-7
155
Alpha:
21%
(22)第21步:
新建一个层,命名为“组件层”,选择“组件层”。
(23)第22步:
选择菜单“窗口→公用库→按钮”命令,在“按钮”窗口中按住鼠标左键将一个“rectbevelgold”按钮放置到舞台上,在“X”文本框中输入“360”,“Y”文本框中输入“313”。
(24)第23步:
选择菜单“窗口→组件”命令,在“组件”窗口中用鼠标双击“UserInterface”展开列表选择,按住鼠标左键将一个“TextInput”输入文本框组件放置到舞台上,在命名文本框中输入“inputchar”,在“X”文本框中输入“219”,“Y”文本框中输入“524”。
(25)第24步:
选择菜单“窗口→库”命令,将表7-10所示影片剪辑拖放到舞台,影片剪辑相应的属性设置也如表7-10所示。
表7-10影片剪辑属性列表
影片剪辑实例名称
X
Y
颜色
life
483
523
无
lifebox
482
523
无
(26)第25步:
用鼠标选择“第2帧”,单击鼠标右键,在快捷菜单中选择“动作”,在“动作”面板输入如下代码:
//显示用户信息
userinformation.text=userclass+usernumber+username+usergender;
//显示用户训练级别
gradeinformation.text=usergrade;
//将“重新训练”按钮为不可见
_root.againButton._visible=false;
stop();
(27)第26步:
用鼠标选择“inputchar”输入文本西框组件,单击鼠标右键,在快捷菜单中选择“动作”。
在“动作”面板输入如下代码:
on(change)
{
//遍历舞台上所有影片对象
for(varjin_root)
{
//判断影片对象是否为生成的训练字符
if(_root[j]._name.indexOf("txt")==0)
//判断用户输入与生成的训练字符是否相等
if(_root[j].text==_root.inputchar.text)
{
//设置生成的训练字符Y坐标
_root[j]._y=610;
//将生成的训练字符设置为空
_root.inputchar.text="";
_root[j].text="";
}
}
}
for..in知识请阅读项目相关理论知识7.3.5
(28)第27步:
用鼠标选择“rectbevelgosld”按钮组件,单击鼠标右键,在快捷菜单中选择“动作”,在“动作”面板输入如下代码:
on(press)
{
gotoAndStop
(1);
}
(29)第28步:
新建一个层,命名为“代码层”,选择“代码层”。
(30)第29步:
用鼠标选择“第2帧”,单击鼠标右键,在快捷菜单中选择“动作”,在“动作”面板输入如下代码:
//输入框获得控制焦点
_root.focusManager.setFocus(inputchar);
//设置变量的初始值
vargeneration=0;
varcount=0;
varcountControl=0;
varspeedControl=0;
varnumberControl=0;
varcharNeed:
String="";
//设置所有训练的字符
varcharArr:
Array=newArray("我人有的和主产不为这工要在地一上是中国经以发了民同","白毕卞蔡曹岑常车陈成程池邓丁范方樊费冯符傅甘高葛龚古关郭韩何贺洪侯胡华黄霍姬简江姜蒋金康孔柯赖郎乐雷黎李连廉梁廖林凌刘柳龙卢鲁陆路吕罗骆马梅孟莫母穆倪宁欧区潘彭蒲皮齐戚钱强秦丘邱饶任沈盛施石时史司徒苏孙谭汤唐陶田童涂王危韦卫魏温文翁巫邬吴伍武席夏萧谢辛邢徐许薛严颜杨叶易殷尤于余俞虞元袁岳云曾詹张章赵郑钟周邹朱褚庄卓","开屯到天表于五下不理事画现与来列珠末玫平妻珍互玉载地支城圾寺二直示进吉协南志赤过无垢霜才增雪夫坟左顾友大胡夺三丰砂百右历面成灰达克原厅帮磁肆春龙太械李权枯极村本相档查可楞机杨杰棕构析林格样要检楷术式节芭基菜革七牙东划或功贡世芝区匠苛攻燕切共药芳虎皮睚肯睦睛止步旧占卤贞卢眯瞎餐睥盯睡瞳眼具此眩虹最紧晨明时量早晃昌蝇曙遇电显晕晚蝗果昨暗归蛤昆景呀啊吧顺吸叶呈中吵虽吕另员叫噗喧史听呆呼啼哪只哟嘛轼囝轻因胃轩车四辊加男轴思辚边罗斩困力较轨办累罚曲邮凤央骨财同由峭则崭册岂赕迪风贩朵几赠内嶷凡长季么知秀行生处秒得各务向秘秋管称物条笔科委答第入找报反拓扔持后年朱提扣押抽所搂近换折打手拉扫失批扩肛服肥须朋肝且胩膛胆肿肋肌甩膦爱胸遥采用胶妥脸脂及代他公估仍会全个偿介保佃仙亿伙你伯休作们分从化信氏凶色然角针钱外乐旬名甸负包炙锭多铁钉儿匀争欠久度离充庆衣计主让就是训为高记变这义诉订放说良认率方并闻冯关前半闰站冰间部曾商决普帝交瓣亲产立妆闪北六江池汉尖肖法汪小水浊澡渐没沁淡学光泊洒少洋当兴涨注煤籽烃类粗灶业粘炒烛炽烟灿断炎迷炮煌灯烽料娄粉糨米宽字害家守定寂宵审宫军宙官灾之宛宾宁客实安空它社民敢怪居导怀收悄慢避惭届忆屡忱懈怕必习恨愉尼心陈子取承阴际卫耻孙阳职阵出也耿辽隐孤阿降联限队陛防毁好妈姑奶寻姨叟录旭如舅妯刀灵巡婚杂九嫌妇姆妨戏邓双参能对骊骒台劝观马驼允牟骠矣骈艰难驻红弛经顷级结线引纱旨强细纲纪继综约绵张弱绿给比纺","abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ","0123456789");
//判断用户的训练内容
if(usertrainyj)
{
charNeed=charNeed+charArr[0];
trainproject.text+="一级";
}
if(usertrainbj)
{
charNeed=charNeed+charArr[1];
trainproject.text+="二级";
}
if(usertrainej)
{
charNeed=charNeed+charArr[2];
trainproject.text+="百家";
}
if(usertrainywxx)
{
charNeed=charNeed+charArr[3];
trainproject.text+="小字母";
}
if(usertrainywdx)
{
charNeed=charNeed+charArr[4];
trainproject.text+="大字母";
}
if(usertrainsz)
{
charNeed=charNeed+charArr[5];
trainproject.text+="数字";
}
//设置生成字符的格式
varcharFormat=newTextFormat();
charFormat.color=0xffffff;
charFormat.size=30;
generateChar(usergrade);
//生成字符函数
functiongenerateChar(_pstr:
String)
{
//判断相应的等级决定字符的生成数量与速度
if(usergrade=="菜鸟级")
{
setparameter(50,1,40);
}
elseif(usergrade=="江湖级")
{
setparameter(150,2,25);
}
elseif(usergrade=="高手级")
{
setparameter(180,2,15);
}
elseif(usergrade=="大师级")
{
setparameter(200,2,15);
}
elseif(usergrade=="精灵级")
{
setparameter(240,3,10);
}
elseif(usergrade=="梦幻级")
{
setparameter(280,5,5);
}
_root.onEnterFrame=function()
{
_root.focusManager.setFocus(inputchar);
generation++
//判断决定字符生成速度
if(generation%numberControl==0)
{
count++;
i=_root.getNextHighestDepth();
//动态生成字符
root.createTextField("txt"+i,i,25+730*Math.random(),0,40,40);
//随机决定生成的字符
pos=random(charNeed.length);
_root["txt"+i].text=charNeed.substring(pos,pos+1);
//设置生成字符的格式
_root["txt"+i].setTextFormat(charFormat);
//判断是否挑战成功
if(count==countControl)
{
display("恭喜,挑战成功!
");
}
}
for(varjin_root)
{
if(_root[j]._name.indexOf("txt")==0&&_root[j].text!
="")
{
//字符匀速下降
_root[j]._y+=speedControl;
//判断是否当前字符被用户正确输入
if(_root[j]._y>=600&&_root[j]._y<605)
{
//生命值减3
_root.life._xscale-=3;
//判断生命值是否为零
if(_root.life._xscale<=0)
{
display("很遗憾,挑战失败!
");
_root.againButton._visible=true;
}
}
}
}
}
}
//显示结果函数
functiondisplay(pstr:
String)
{
//删除_root的onEnterFrame函数
delete_root.onEnterFram