繁体中文
设为首页
加入收藏
当前位置:网站制作首页 >> Flash教程 >> Flash MX2004入门与进阶实例:7.3 声音控制和智能动画片断

Flash MX2004入门与进阶实例:7.3 声音控制和智能动画片断

2007-11-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:第七章 动作脚本进阶 第三节 声音控制和智能动画片断(1) 1.滑杆控制声音音量 在动画作品中,音量控制是非常常见的,制作方法有很多。下面我们制作一个实例,采用一种很逼真的“滑杆控制器”,如果你把它放到一个...

第七章 动作脚本进阶

第三节 声音控制和智能动画片断(1)

1.滑杆控制声音音量

在动画作品中,音量控制是非常常见的,制作方法有很多。下面我们制作一个实例,采用一种很逼真的“滑杆控制器”,如果你把它放到一个播放器画面上,那更是相得益彰了!

本例涉及到【库】操作中的一个高级应用:元件的“捆绑”使用技术。如图7-3-1所示就是本例的运行画面,图中的“滑杆控制器”按钮可以上、下拉动,在最上方时无声,随着滑杆按钮往下拉,声音由轻到重,直至底部时音量达到最大。

图7-3-1中所示的是音量达到63时的状态。

图7-3-1 滑杆控制运行画面

你可以打开本例的源文件(文件路径:配套光盘/……/滑杆控制.fla),观察它的【库】,仅2个项目:一个是导入的音乐元件,另一个是文件夹,文件夹中的内容是“滑杆控制组件”,它并不需要制作,是Flash MX 2004【公用库】中的元件。

好了,观察完本实例的源文件,我们就带着疑问来分析一下这个实例是怎么制作完成的吧!

(1)关于“滑杆控制器”

打开【窗口】|【其他面板】|【公用库】菜单,在菜单中有一个【按钮】项,单击它,弹出如图7-3-2所示的“按钮公用库”。

图7-3-2 Flash的按钮共享库

在【库-按钮】面板中,选择其中的【fader-mixer】影片剪辑,并把它拖到场景中。

这个由Flash提供的组件从外形上看是个很逼真的“滑杆控制器”,那么,我们怎样使用它呢?

在讲解前,先让我们看看“fader-mixer”实例的内部结构,建议你打开一个新文档,把“fader-mixer”拖进“场景”。

让我们进入“fader-mixer”的编辑界面,我们看到一个名叫“Fader”的MC,选择它,打开【动作】面板,如图7-3-3所示。这是“Fader”的运行代码,代码的意思是,当这个MC运行时:

把它的“y轴”坐标值赋给变量“inity”;

把它的“x轴”坐标值赋给变量“left”;

把它的“x轴”坐标值赋给变量“right”;

把它的“y轴”坐标值赋给变量“top”;

把它的“y轴”坐标值“加100”赋给变量“bottom”;

以上代码不用自己编写,它是Flash随“滑杆控制器”MC一同提供给用户的,在实际应用时必不可少。

本例在使用这个“滑杆控制器”MC时,需要提醒你注意的有2条:一是为了使“Fader”被拉动时保证仅限于上、下动,左右不动,所以把“x轴”座标值同时赋予变量“left”和“right”;二是为了使“Fader”拉动到“顶部”或“底部”时更“到位”,所以要在原来的“坐标值”上加“100”,“100”是“Fader”的高度。

图7-3-3 “Fader”的事件脚本

双击“Fader”,我们再探索一下它的内部,发现一个叫“Fader button”的按钮,选择按钮,打开【动作】面板,如图7-3-4所示。

图7-3-4 “Fader button”按钮的脚本

这是2段按钮指令,上面一句的功能是:

当鼠标移动到该按钮上时,该对象允许在“左、顶、右、底”4个坐标值规定的范围内被拖动。

下面一句的功能是:鼠标离开,停止拖动。

2个代码比较一下,是不是很明白了?Flash在把这个元件提供给我们时,通过“Fader”及“Fader button”已经为我们提供了较完整的功能。

第七章 动作脚本进阶

第三节 声音控制和智能动画片断(2)

(2)关于链接声音

下面,我们让这个MC组件为音量控制服务。

要达到这个目的有一个困难:音乐是个特殊的元件,它的实例应用一般通过“帧属性”设置,这样显然不能使“滑杆控制”与其联系起来,所以,我们先得把音乐“实例化”,或者说,使音乐成为“舞台”中的一个对象。

现在,请打开本例的源文件:“滑杆控制.fla”,从【库】中找到音乐元件,用鼠标右键单击它,如图7-3-5所示。

图7-3-5 声音元件的右键菜单

在弹出的菜单中选择【链接】,打开【链接属性】对话框,如图7-3-6所示,按图中设置,输入音乐的实例名为“mysound”,并选择【链接】为【为动作脚本导出】和【在第一帧导出】。

图7-3-6 声音元件链接属性

(3)将声音实例和“滑杆控制器”联系起来

好了,下面仅需把“mysound”与“滑杆控制器”联系起来就完成任务了,这种联系是通过几段并不复杂的代码进行的,在讲解这些代码前,请熟悉一下其中主要几个指令的含义:

u mySound.attachSound("idName")

是一个Flash的“方法”,它将名为“idName”的声音附加(捆绑)到指定的音乐对象,在本例中,我们已经命名为“mysound”。

u mySound.start([secondOffset, loop])

这条指令能使前一条指令立即生效,即播放音乐。

其中“secondOffset”是一个可选参数,使你可以从某个指定时间播放声音,“loop”是一个可选参数,指定声音连续播放的次数。

u mySound.setVolume(volume)

这条指令用来设置音乐对象的音量。

“volume”是一个从“0”到“100”之间的数字,表示声音级别。“100”为最大音量,而“0”为没有音量。

u mySound.getVolume()

这条命令与上一指令相反,它为返回音量级别,也是一个从“0”到“100”之间的整数。

u getProperty(instancename , property)

这一条指令大家较熟悉,是获取MC的某种属性,“instancename”为MC的实例名称。

有了对以上指令的认识,本实例的制作不难了(关于动画编程的详细内容,请参阅本书有关章节)。

在我们的范例中,主场景1如图7-3-7所示。

我们作了些界面布置(输入了一些标题文本信息、绘制了一个五线谱图形),增加了一个显示音量的“动态文本”对象,还有就是右边放置的已经熟悉的“滑杆控制器”MC实例。

图7-3-7 场景1的界面

在【控制】图层中,我们加了2条“帧指令”,第1帧的代码如图7-3-8所示。

图7-3-8 创建“音乐对象”的代码

第七章 动作脚本进阶

第三节 声音控制和智能动画片断(3)

解释如下:

第1条:创建了名为“S”的音乐对象;

第2条:这条语句很关键,意思是把上面在【库】中设置的音乐元件“捆绑”在新对象“s”上。不难理解,通过这一句,我们就可以在“舞台”上控制音乐了。

第3条:把音量的初值设为最大。

第4条:使“s”对象开始播放,从头开始,循环“999”次。

选中第2帧,这一帧的脚本很简单,为“stop”,使前面的程序执行完停止在此帧,等待用户的下一步交互操作。

现在,舞台上已经有了可以播放的音乐对象“s”,但是,还没有把它与“滑杆控制”联系起来,在后面的代码中,要用到一些“实例名”。

请注意源文件“滑杆控制.fla”中的2个改动:

场景中的“滑杆控制”对象我们重新起了个实例名为main,而它内部的MC改为vett,在讨论下面的代码时,一定得记住这2个实例名。

请双击滑杆控制器(也就是“main”),进入它的编辑界面,单击“新加控制”图层的第1帧,打开【动作】面板,这是最后要说的一段代码了,如图7-3-9所示。

图7-3-9 内部的控制代码

请参考上面相关脚本解释,这3行代码读懂了,整个范例你也就掌握了!

第1句的意思是:把“vett”的“Y轴坐标值”赋给变量“xxx”,“vett”在主场景的“main”中。

注意:“Y轴坐标值”就是我们用鼠标拉动“滑杆控制”按钮而产生的不同位置值。

第2句的意思是:主场景中“s”对象的“音量”设置为“xxx-24”,这样就使音量与按钮位置联系起来了。那么为什么减“24”呢?

因为音量是由按钮的Y轴位置值表示并控制的,按钮是个有一定体积的“物体”,坐标值又是以其“中心点”(注册点)为依据的,难免有很大误差,“24”这个数是看了后面第3句的“yl”显示数值才得出的,你可以试试不减“24”,将会看到音量最底时为“24”,音量最高时为“124”,造成音量最底时“底不了”,最高时“高不了”的情况。

第3句的意思简单了:把音量的变化值赋给主场景中的变量“yl”,这个变量就是“动态文本”对象的变量,从而实时显示音量值。

说明:“动态文本”是文本的一种类型,通常用它动态显示一些文本信息,有关动态文本的详细信息请你参看第八章第一节的相关内容。

2.智能动画片断(SmartClip)

“智能动画片断”(SC)实际上就是“影片剪辑”(MC),唯一不同在于:MC定义了“参数”就成为“智能动画片断”了!

那么“SC”有什么作用呢?下面我们就通过一个实例来分析一下。请看这个实例的运行情况,如图7-3-10所示。

图7-3-10 智能动画运行画面

画面上有6个图形,当你用鼠标停留在某个图形上时,它会渐渐消失(透明度变化),鼠标离开图形后又会渐渐出现,并且这6个对象的消失、出现的速度是各不相同的,当你上下快速划动时更能发现这种差别。

左边的“透明度”一列数字显示其变化值,右边的“步长”表示以多少“步长”变化。

按照一般的思路,你可能会想到,要达到这样的效果,可以制作6个MC对象,在MC内部分别创建6个按钮,再在每个按钮中添加相关指令。是的,这样能做到同样效果。但是,本例仅用了1个MC,只需在【属性】面板设置不同的“参数”值,就能轻易达到目的!

下面我们仔细分析一下本例的制作方法。

“智能动画片断”的制作关键无疑就是“参数”了,其实这是一个相当简单的操作。

请你打开源文件“智能动画.fla”中的【库】,其中有一个“唯一的智能MC”库项目,选择它,调出“右键快捷菜单”,单击其中的【组件定义】命令,如图7-3-11所示。

图7-3-11 “组件”定义命令

该命令打开了如图7-3-12所示的【组件定义】对话框。

在本例中,我们为“组件”定义了一个参数:【speed】,参数值为“5”。

在实际运用中,你可以单击“+”号,增加任意多的参数,参数的类型有好多种,本例使用“默认”类型。

图7-3-12 组件定义对话框

第七章 动作脚本进阶

第三节 声音控制和智能动画片断(4)

请你注意一下【库】中项目,一个MC有了“参数”,它发生了“质”的变化,现在这个元件的类型是“组件”,它的“图标”也作了相应改变。

我们再看看它的【属性】面板,如图7-3-13所示。

我们可以看出:“智能动画片断”的基本属性与普通MC完全一样,只不过,在它的【属性】面板右下角多出了一个【参数】按钮。

图7-3-13 智能动画的属性面板

单击【参数】按钮,就是“参数设置”部分了,如图7-3-14所示。

在本例中,我们把这个“SC”复制成6份,然后分别把它们的【speed】值设为“5”、“10”、“15”、“20”、“25”、“30”。这样就使1个演员兼备6种“才能”,请你注意,这与“实例复制”完全不同,后者只能进行“表面”的变化,如大小、颜色、方向等。

那么,我们如何利用这个“参数”呢?让我们进一步看看“SC”内部的情况。

图7-3-14 智能动画的参数

这6个对象是完全一样的,你可以选择任意一个(你可能发现“双击”起不了作用,这一点与一般的“MC”有点不同),调出“右键菜单”,单击【编辑】菜单项,如图7-3-15所示。

图7-3-15 对象的右键快捷菜单

现在我们进入了“唯一的智能MC”这个SC的编辑界面,如图7-3-16所示。

图7-3-16 “唯一的智能MC”编辑场景

这里是个叫“基本MC”的影片剪辑对象,它的“帧代码”仅有一条:“myfun();”,请参见图7-3-17,它的意思是:当播放指针到达当前“帧”时,运行“myfun()”。

那么“myfun()”是什么呢?它是一个“自定义函数”,要知道它的内容,请“双击”这个“基本MC”,这一下“双击”有效了,因为这个“基本MC”是普通的MC。

图7-3-17 “基本MC”的帧代码

现在我们进入了“基本MC”的编辑界面,如图7-3-18所示。

图7-3-18 “基本MC”中的按钮指令

在“基本MC”中,包含3个对象:1个按钮及2个“动态文本”。

我们先看看按钮指令:

这是2条按钮事件指令,它们的意思是:当鼠标经过该按钮时,设置变量“sobre”为“1”,当鼠标离开时为“0”,这是为主程序“myfun()”提供了2种“状态变量”。

左边“动态文本”对象的变量名是“speeds”,它实时显示对象的“透明度值”(动态值);右边的“动态文本”对象变量名是“_parent.speed”,它直接显示了对象“参数设置值”(固定值)。

最后,我们来看看主程序“myfun()”,用鼠标单击“控制图层”的第1帧,打开【动作】面板,如图7-3-19所示就是“自定义函数”:myfun()。

图7-3-19 主程序代码

“myfun()”程序其实就是2种状态:鼠标进入(“sobre==1”)和鼠标离开(“sobre==0”)。

现在简单描述一下代码意思:

当鼠标进入该对象时(“sobre==1”),如果它的透明度已经大于“0”,那么它的透明度减去“speed”,这就是对象的“参数值”,不同的对象有不同的值,从而产生不同运行结果。

由于这个程序是反复运行的,所以透明度是连续递减的,当透明度小于“0”时,设置为“0”,最后把这个变化值赋给“动态文本变量”:speeds。这就是动画播放时我们看到的左列数字变化。

当鼠标离开该对象时(“sobre==0”),如果它的透明度没满“100”,那么就以“speed”为步长递增,当超过“100”时,把透明度值设为“100”,最后再把变化值赋给“动态文本变量”:speeds。

这就是主程序的全部意思。

本例是个很简单的示范,事实上“SC”可以定义多个“参数”,做出相当复杂,功能强大的动画组件。

责任编辑:admin
相关文章