当前位置: 首页 > 图文教程 > Flash动画 > Flash动画制作 > Flash教程:通过实例学习AS(三):体质测试

Flash动画制作
赤手空拳下载Flash
创建一个Flash站点的十大技巧
用Flash制作Google搜索程序
枫桥夜泊下 遮罩效果的动态文本
Flash MX 2004 ActionScript图文教程(十二)
Flash实例教程 扫描文字效果
Flash MX 2004 ActionScript图文教程(十三)
快速制作您的flash图表
Flash MX 2004 ActionScript图文教程(十四)
Flash实例教程 变幻的字母
Flash MX 2004 ActionScript图文教程(十五)
Flash实例教程 相约北京 扬帆青岛
Flash教程实例 光线特效文字
Flash课件实例 画正多边形
Flash课件实例 平行四边形法则
Flash实例教程 小孔成像课件
精简Flash文件体积七法
Flash教程实例:水中浮动的文字
金鸡贺岁!Flash制作鸡年新春动画贺卡
Flash MX 2004新特性实例学习一

Flash动画制作 中的 Flash教程:通过实例学习AS(三):体质测试


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-22   浏览: 164 ::
收藏到网摘: n/a

先看效果,看看你的身材如何:

请填写下面的内容,然后点击确定,看看你的体质如何。

这次我们通过一个体质测试的小东东,来学习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等,在这一帧,应该画一个矩形,为按钮指定区域,不然,运行时,只有当用户当到笔画上时才起作用。一般图形的话就在这一帧插入关键帧就行了,睛整个图形范围都可以点击。自已做的按钮不起作用,问题多半出在这一帧上。

进一步认识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();
}

好了,现在开始做练习:

首先准备素材,我们需要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 = "";
}