Flash教程:通过实例学习AS(三)——体质测试,很多朋友都说了,想学AS,但又觉得不太好学,的确,系统地学习AS是要有耐心,恒心才行。特别是那些专业的名词、术语诸如:包、类、对象……等,苦涩难懂,又嚼之无味,所以我想我们就不系统地学习,我们来做练习,从而来学习AS知识,大家一起走进AS世界。
【 tulaoshi.com - Flash 】
本文由中国 sanbos 原创,转载请保留此信息!
先看效果,看看你的身材如何:
请填写下面的内容,然后点击确定,看看你的体质如何。
[next]
这次我们通过一个体质测试的小东东,来学习AS的文本框的相关内容,同时我们还会用到,组件,对if条件语句进一步地了解。首先我们来看看文本框。
使用文本框
在我们实际制作flash的时候,经常都会用到文字。在flash中的文字都是通过文框来实现的。当我们在工具栏中用“T” 工具在场景中拖出一个框时,我们就建 立了一个文框。然后,我们点开属性面板,可以看到这里有三个文本框的选项,分别是:静态文本框、动态文本框和输入文本框。静态文本框一般用来用为标签一样的东西,也就是说在场景中显示一些文字,这些文字在画好文本框后,就可以马上输入,而且在以后运行swf文件时,它不会发生变化。动态文本框,也是显示一些文字,但这些文字在以后会发生变化,我们可以在AS中,让文本框中的字变成其它内容。因为要在AS中用到它,所以,在属性面板中为它指定名称就是必须的了。再有一个就是输入文本框,这个文本框是在运行swf文件时,用户可在这个文本框中输入文字。
在AS中使用组件
组件就是AS中已经包装好了的一些东西,我们拿来就用,只须设置一些属性就行了。本例介绍两个组件:
comboBox组件,这是一个下拉列表组件,如本例中的性别一栏,就是一个下拉列表。通过单击“窗口”-“组件”,在打开的组件对话框中,展开“User Inteface”项,找到“comboBox“组件,将它拖到桌面上,就创建了这个组件。然后,打开属性面板,点击”参数“,就可以为这个组件设置参数了,点击”labels那一栏,再点这栏右边的放大镜,打开一个对话框,就可认为下拉列表输入内容了,即要显示在下拉列表中的内容。看到左上角的+号了吗?点一下,就可以增加一行,比如本例中我先输入一个“男”字,然后,点一下那个+号,新增加了一行,我们再在这一行中输一个“女”字。这样,参数就设好了。不要忘了,在属性在属性面板中为这个下拉列表指定一个名称,本例中指定为“xb_comb”.如图:
TextInput组件,实际上这就是一个文本框,它有点象输入文本框,我们用它主要是想给大家多介绍一个组件而已。所以,你在制作时,完全可以用输入文体框,而不用本组件。从组件对话框中,将TextInput组件拖到场景中,然后在属性面板中为它指定名称即可。
按钮的应用
我们需要做两个按钮。按钮为什么要自已做呢,你上面那两个按钮做得并不好看啊,公用库里多得很。是的,是的,你是正确的。但我们的目的是学习AS啊,有时我们也想将图片做成按钮,也想制作一些有个性的按钮啊。常常有人会问道,为什么我作的按钮,没有用呢,点了它没反应。所以我认为还是应该介绍一下,基于为种考虑,我采用自已做按钮的方式。制作按钮很简单,以上面的“确定”按钮为例,点击“插入”-“新建元件”,在弹出的对话框中选择按纽,填上名字,确定。这时就进入了,按钮编辑窗口,在上面画一个矩形,然后插入一层,在矩形上输入文字,如“确定”。现注意一下,时间轴,共有4帧,分别是:弹起,指针经过,按下、点击,弹起就是平常看到的样子,这里不用管它;指针经过,是鼠标移到按钮上时,这时一般设为高亮显示。在这一帧为按钮选一个比原色稍浅一点的填充色就行了。按下,是当鼠标点击的时候,按钮的样子。一般是凹下去的感觉。我的做法是在这一帧将按钮的边框线条加粗。最后一帧是点击,它是指鼠标的点击范围,就是说在按钮上指定一定的区域,鼠标只有在这个区域内点击才有效。所以这一帧是必须插入关键帧的。需要注意的是,纯文字按钮如:play、stop、replay等,在这一帧,应该画一个矩形,为按钮指定区域,不然,运行时,只有当用户当到笔画上时才起作用。一般图形的话就在这一帧插入关键帧就行了,睛整个图形范围都可以点击。自已做的按钮不起作用,问题多半出在这一帧上。
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/flash/)进一步认识if条件语句
if条件语句,我们在前面的练习中,已经介绍过,还记得我们举那个例子吗?如果你不好好做练习,就拖出去打PP,现在有这样的问题,就说我是好好做练习了的,但我却发了违规帧。那应该怎样写呢?用一句 else if (),就行了,如下例:
if (你没有好好做练习) {
拖出去打PP;
} else if (你发了违规帖) {
删除你的帖子;
}
那你说我是这种情况,我好好做了练习,又没发违规帖,总之,我是个乖娃娃,又怎样写呢?这样:
if (你没有好好做练习) {
拖出去打PP;
} else {
给你加分分;
}
还有一种情况,就说都好好做练习了,都是乖娃娃了,但交上来的作业,有好有差,又怎么办呢?我们可以用if 中嵌套if 的办法不解决,如:
if (好好做了练习) {
if (作品水平较高) {
给你加分分,向你学习;
} else if (作品水平较低) {
也给你加分分,鼓励并帮助你;
}
}
不知道,我说清楚了没有。
AS对帧的控制
AS对帧的控制我们在做第一个练习的时候就用到了,那时没有介绍这个内容,现补上。
主要介绍中四个命令,不管是主场景还是影片剪辑中的帧都一样。
play() 帧开始播放。
stop() 帧停止播放
gotoAndPlay(n) 括号中的n中一个数字,即帧转到第n帧开始播放。
gotoAndStop(n) 帧转到第n帧,停止播放。
注意,我们如果把代码加到按钮或mc中,要控制主场中的mc的帧动作的话就应该加上_root.,_root.可以理解为主场影的,比如,我们在按钮中加代码控制在主场景中的一个叫mc的影片剪辑开始播放,就可以这样写:
on(replease) {
_root.mc.play();
}[next]
好了,现在开始做练习:
首先准备素材,我们需要8张图,分别是:男、女极瘦、标准、稍胖、肥胖几种身材。你可以自已画,我不会画,所认去网上找了两个人,,然后用变形工具调成各种身材,但同志们是一定不能象我这样懒的,要好好画。
画片准备好以后,新建一影片剪辑元件,在第一层,第二帧插入关键帧。为什么呢?为什么是第2帧呢?因为我们在刚开始时并不让元件上的内容显示出来,所以我们把第1帧给它空起,然后在第1帧的帧动作上加上:stop();这样把元件放到场景中就什么都看不到了。加了吗?加了,我们就继续,回到第二帧,将极瘦的女孩拖进来,居中放好。在图片的右边加上一个静态文本框,输入主:“你也太瘦了点吧,要身才不要命了?还是多吃点营养的东西吧,女孩子太瘦了也不好。”第3帧插入关键帧,拖极瘦男从进来,文字内容是:“男了汉那么瘦怎么行?风都能把你吹倒,还是多吃点营养品补补吧。”第4帧放标准女孩,文字为“美女,身材好哦。恭喜你,你的体重很标准。介绍点经念哦。”第5帧放标准男子,文字为:“帅哥身才不错,挺匀称的。恭喜你的体重很标准。”第6帧放稍胖女子,文字为:“有人叫你胖妹了吗?是应该减肥了,你应该注意你的饮食,多运动,伸伸舌头,伸伸腿,纽纽脖子,纽纽屁股,多做深呼吸……”,在第7帧放入稍胖男子,文字为:“发福了哈,体重超了哦,应该注意饮食了,多运动才好。把你的轿车让我给你保管吧,你走路上班。我也是为你的身体着想啊。” 第8帧放肥胖女子,文字为:“你是太胖了点,开始段练吧,相信还是可能将体重降下去的。”第9帧放肥胖男子,文字为“胖哥逗人爱哦,不过对身体不是太好哈。你也太肥了点,开始减肥吧。”总算输完了,这个影片剪辑就做好了。
按上面的介绍,新建两个按钮,分别为“确定”、“重试”。
现在回到主场景,在舞台的左半边,最上面放一动态文本框取名为syts_txt,然后放上一个下拉列表组件,方法及属性设置参见上面的组件介绍。然后,将两个TextInput组件放到场景中,分别取名为:tz_text, sg_text,在两个文本框的左边,分别放上一个静态文本框,内容为“你的体重(kg)”和“你的身高(厘米)”,然后将两个按纽放到场景中。最后将上面制作的影片剪辑放到场景的右半部。
现在开始写代码:新建一层,命名为action,打开动作面板。写下如下代码:
syts_txt.text = "请填写下面的内容,然后点击确定,看看你的体质如何。"
这是为我们放在左边的动态文本框赋值。我们要动态改变动态文本框的内容,只需要为动态文本框的text属性赋值就行了,就象上句一样。
接下来点中“确定”按钮,打开动作面板,写下如下代码:
on (release) {
var tz:Number
=parseInt( _root.tz_text.text); //parseInt()是将括号中的数据转换为数值类型。
var sg:Number
= parseInt (_root.sg_text.text)/100;//身高输入时是厘米,在计算时要用米作单位,所以除以100
var xb = _root.xb_comb.text;//comboBox的text属性是指下拉列表中当前显示的内容
var bmi = tz/(sg*sg);//主这里算出一个bmi值,根据这个值,来确定影片剪辑播放到那一帧。
if (xb =="男") {
if (bmi < 18.5) {
_root.jg_mc.gotoAndStop (3);//如果性别为男,算出的bmi又小于18.5,影片剪辑就跳到第3帧,并停止。以下相同,就不说明了。
} else if (bmi=18.5 && bmi <=23.9) {
_root.jg_mc.gotoAndStop (5);
} else if (bmi= 24 && bmi <= 26.9){
_root.jg_mc.gotoAndStop (7);
} else if (bmi = 27) {
_root.jg_mc.gotoAndStop (9);
}
}
if (xb == "女") {
if (bmi < 18.5) {
_root.jg_mc.gotoAndStop (2);
} else if(bmi = 18.5 && bmi <= 23.9) {
_root.jg_mc.gotoAndStop(4);
} else if(bmi = 24 && bmi <= 26.9) {
_root.jg_mc.gotoAndStop(6);
} else if(bmi= 27){
_root.jg_mc.gotoAndStop(8);
}
}
}
最后是“重试”按钮,代码为:
on(release) {
_root.jg_mc.gotoAndStop(1);
_root.tz_text.text = "";//清空体重文本框
_root.sg_text.text = "";
}
与本文相关讨论请到这里与作者交流:http://bbs.jcwcn.com/viewthread.php?tid=167259
来源:http://www.tulaoshi.com/n/20160129/1486475.html
看过《Flash教程:通过实例学习AS(三)——体质测试》的人还看了以下文章 更多>>