·您的位置: 首页 » 资源教程 » 创意设计 » Flash » Flash实用技巧之音乐时间显示篇

Flash实用技巧之音乐时间显示篇

类别: Flash教程  评论数:0 总得分:0

效果简介:

  今天,笔者要教大家做一个很炫而且很实用的视觉效果。在winamp主面板的左侧,可以看到有音乐播放时间的显示,还有跳动的光谱分析器,如图1所示。本文就是讲解如何在Flash中实现这些视觉效果。本例的设计效果如图2所示。

  

 图1,图2

  同样的,这个效果中有很多技术可以应用到您的作品中。下面我们可就开始制作了。

制作步骤:

  打开FlashMX。按快捷键Ctrl+F3打开“属性”,设置场景为200px×100px,黑色,帧速率12fps。

制作元件

  一、制作“按钮”元件。

  1.按快捷键Ctrl+F8打开“创建新元件”面板新建一个名为“按钮”的影片剪辑元件。该按钮的作用是播放音乐、停止音乐和停止光谱分析器地运行。

  2.点选“窗口”菜单下“公共库”中的“按钮”选项。然后在打开的“按钮”库中找到的“Playback”文件夹,并把其中的“gel Right”拖拽到“按钮”元件第1帧的场景的中心位置上。如图3所示。点选场景中的按钮,按快捷键Ctrl+F3打开“属性”面板,给按钮起个实例名“bn1”。如图4所示。

  

 图3 ,    图4,    图5

  3.点选中“按钮”元件第2帧,按F7键插入一个空白关键帧。接着把按钮公共库的“Playback”文件夹中的“gel Stop”按钮拖拽到第2帧场景的中心位置上。也选中该按钮,在“属性”面板中起实例名“bn2”。到这里“按钮”元件就设计好了。

  二、制作“光谱分析器”

  “光谱分析器”是模拟winamp的。要实现开关的效果必须使用两个按钮元件,并用代码进行跳转控制。分析器中的光谱柱元件由“光柱一”和“光柱二”两个元件组成的。其具体的制作步骤如下。

  制作“光柱一”元件

  1.按快捷键Ctrl+F8,新建一个名为“光柱一”的影片剪辑元件。选中“工具”面板中的“矩形”工具(禁用边线)。接着用鼠标左键在“光柱一”元件的场景中绘制一个矩形。选中刚绘制出的矩形,如图5所示设置其大小以及在场景中的位置。图5中,可以看到“光柱一”的Y值为-15px。这是为了“光柱一”的底线穿过场景的中心点,使下面的设计能够正常地使用其_yscale属性。这点很重要。如图6所示。设计“光柱二”的时候也注意这个问题。

  2.按快捷键Shift+F9打开“混色器”面板。在“混色器”面板的下来菜单中先选择“线性渐变”选项。“混色器”面板中两个小滑块的颜色分别是“#01B401”和“#022E01”。如图7所示。接着设置场景为“全部显示”模式(如图标)。然后选中“工具”面板中的“颜料桶”工具,然后用鼠标左键点击场景中的矩形条(上色)。见图8所示。

  3.选中“工具”面板中的“填充变形”工具,然后点击场景中的矩形条。接着拖动白色空心小圆圈(旋转渐变控制点)旋转到水平位置,如图8所示。再拖动白色空心小方块(移动渐变控制点)进行范围调节,如图9所示。这样设置可以使光谱柱更加逼真。

 

图6,    图7

 

图8,    图9

  制作“光柱二”元件

  制作“光柱二”元件的方法和“光柱一”元件基本一样,只是其宽、高为3px和1px,如图10所示。

  制作“光谱”元件

  1.   按快捷键Ctrl+F8,新建一个名为“光谱”的影片剪辑元件。

  2.   按快捷键Ctrl+L,打开库,把库中的“光柱一”和“光柱二”元件拖拽到场景中,如图11所示。移动元件前,可以先把场景的显示设置为400% ,这样方便移动元件。

 

 图10,          图11

  3.   这一步,要先右键点击场景中的两个元件,然后打开“动作”面板,键入代码后再做。但是,本例中的代码都最后添加和讲解。但这一步有必要交代以下。现在,选中场景的两个元件,按快捷键Ctrl+C进行复制,然后再用快捷键Ctrl+V粘贴,再复制,再粘贴。最后效果如图11所示。

  注意,实际上这时候每个元件中都是有代码的。在移动中,可以按快捷键Ctrl+K打开“对齐”面板帮助对齐。也可以通过缩放场景的显示比例来加速元件的移动。

  制作“播放”按钮元件

  1.按快捷键Ctrl+F8,新建一个名为“平台线”的影片剪辑元件。

  2.由于这不是关键的制作,笔者就简要地讲以下它的制作要点。选择“矩形”工具(禁用边线),在该元件的场景中拉出一个矩形长条,然后用黑白“线性渐变”色上色。最后在矩形条上挖去一些宽为1px的间隙。最后设置如图12所示。

图12

图13

图14

  3.在库中双击“平台线”影片剪辑元件,如图13所示。然后在“平台线”元件的场景中按快捷键Ctrl+A全选,接着按F8键打开“转换为元件”面板,并创建成名为“播放”的按钮元件。加入代码后,单击“播放”按钮,“光谱分析器”将会开始运行。这个功能玩过Winamp的朋友都知道。

  4.在库中双击打开“播放”按钮元件,进入编辑场景。点选中“点击”帧按F6键插入关键帧。然后用“矩形”工具拉出一个矩形来覆盖原来的原来的内容。这个矩形就是该按钮的触发区域。在图14中读者可以发现“编辑多个帧” 功能被启用,这将有利于察看多个帧中元件的情况,便于编辑。

  制作“返回”按钮元件

  1.在库中双击“光谱”影片剪辑元件。然后在该元件的场景中按Ctrl+A全选,接着按F8键将其转换成按钮元件,名字为“返回”。加入代码后,单击“返回”按钮,“光谱分析器”将会停止。图13中是该实例的全部元件。有些元件放在文件夹里是为了方便管理和使用。

  2.在库中把“平台线”的影片剪辑元件拖拽到“弹起”帧的场景中,并放置在“光谱”元件下。

  3.双击打开“返回”按钮元件,进入编辑场景。同样点选中“点击”帧按F6键插入关键帧。OK。

  制作“主元件”

  1.按快捷键Ctrl+F8,新建一个名为“主元件”的影片剪辑元件。在库中把“播放”按钮元件拖拽到“主元件”的场景中。接着右键单击第1帧,在弹出的菜单中选择“动作”命令,然后在弹出的“动作”面板中键入代码“stop();”。其作用是该影片剪辑停止播放。

  

 图15,    图16 

图17

  2.点选“播放”按钮,起实例名为“music1”。如图15所示。

  3.点选中第2帧,按F7键插入空白关键帧。在库中把“返回”按钮元件拖拽到第帧的场景中。并同样在帧中键入代码“stop();”。第1和第2帧中元件的位置应该保持一致。



  4.点选“返回”按钮,起实例名为“music2”。

  三、导入音乐

  1.按快捷键Ctrl+R打开“导入”面板,导入一首MP3歌曲。建议大家先选择文件小一点的歌,越小越好,否则经常在测试的时候等待,浪费时间。

  2.打开库,双击库中前面是个小喇叭图标的声音文件打开“声音属性”面板,然后如图16所示设置。这样会使导出的文件变得很小。

  3.右键单击库中的声音文件,在弹出的菜单中选择“链接...”命令,打开“链接属性”面板,并如图17进行设置。为声音创建标识符为“music”,以便用程序将其导出使用。

  设计主场景

  设计主场景之前,先看看主场景中都有哪些东西,有什么作用。如图18所示。中间两个虚线矩形框就是两个动态文本。中间是一个输入冒号的静态文本。有一个装饰用的小三角。最下面的是“主元件”和“按钮”元件,这两个元件的功能前面已经讲过了。这两个动态文本的作用是显示音乐当前的播放时间。他们的制作方法如下。

  1.点选“工具”面板中的文本工具,如图19所示设置“属性”面板。实例中的字体笔者已经压缩在源文件中了,读者可自行下载。关键是一定要给该动态文本起个实例名称“text1”。接着使用“矩形”工具在主场景中拉出一个动态文本,即图18左侧的虚线部分。

 图18

图19

  2.再制作一个动态文本“text2”,即图18右侧的虚线部分。方法同上。

  3.在两个动态文本之间再设计一个静态文本,并输入一个冒号。

  4.在库中把“主元件”和“按钮”这两个影片剪辑元件拖拽到如图18所示的相应位置即可。并给“主元件”起个实例名称“mc”。这很重要,是为了使“按钮”元件能够控制它。

  设计代码

  这部分是本文的重点,也是精华,希望大家花点心思研究一下。

  1.右键单击主场景的第1帧,在弹出菜单中选择“动作”命令,然后在打开的“动作”面板中键入如下代码。这段代码主要是创建一个声音对象和两个全局函数。

// 创建新的Sound对象
mysound = new Sound();
// 把在库中建立链接的声音附加到mySound对象中
mysound.attachSound("music");
// 隐藏动态文本“text1”,使得声音没有播放时“光谱分析器”的条件不满足而不能工作_root.text1._visible = 0;
// 使用_global对象来创建全局函数stsrt_fun
// stsrt_fun函数的作用是播放声音、显示时间
_global.start_fun = function() {
// 播放声音
mysound.start();
// 初始化两个动态文本的内容为“00”
    _root.text1.text = _root.text2.text = "00";
// 定义fun函数,用来显示时间
    function fun() {
// Math对象的floor方法返回小于等于指定参数的整数
// Sound对象中的position属性返回声音已播放的毫秒数
// 变量x纪录了声音已经播放的时间
        x = Math.floor(mysound.position/1000);
// 根据分秒的关系,显示文本的内容
// TextField对象的text属性可以设定文本内容
        if (x<10) {
            _root.text1.text = "00";
            _root.text2.text = "0" + x;
        } else if (x>=10 && x<60) {
            _root.text1.text = "00";
            _root.text2.text = x;
        } else if (x<600) {
            if (x%60<10) {
                _root.text1.text = "0" + Math.floor(x/60);
                _root.text2.text = "0" + x%60;
            } else if (x%60>=10) {
                _root.text1.text = "0" + Math.floor(x/60);
                _root.text2.text = x%60;
           }
        }
    }
// 每隔1000毫秒调用一次fun函数
    setInterval(fun, 1000);
// 循环播放声音
    mysound.onSoundComplete = start_fun;
}
// 定义全局函数stop_fun,作用是停止播放声音
_global.stop_fun = function() {
    mysound.stop();
}

  2.进入“主元件”的编辑场景。右键单击“主元件”场景中的第1帧,在弹出菜单中选择“动作”命令,在打开的“动作”面板中键入如下代码。这段代码的作用是“music 1”按钮被点击后,如果动态文本没有被隐藏,则跳转到第2帧。

stop();
music1.onRelease =function() {
if ( _root.text1._visible == 1 ) {
     gotoAndStop(2);
}
}

  在打开的“动作”面板中键入如下代码。

  右键单击场景中的第2帧,在“动作”面板中键入如下代码。该代码的作用是“music2”按钮被点击后,返回到到第1帧。

stop();
music2.onRelease = function() {
    gotoAndStop(1);
}

  3.进入“按钮”影片剪辑元件的编辑场景。右键单击场景中第1帧,在“动作”面板中键入如下代码。这段代码的作用是“bn1”按钮被点击后,显示动态文本,执行start_fun函数,然后跳转到第2帧。

stop();
bn1.onRelease = function() {
    _root.text1._visible = 1;
    _root.text2._visible = 1;
    start_fun();
    gotoAndStop(2);
}

  右键单击场景中的第2帧,在“动作”面板中键入如下代码。该代码的作用是点击“bn2”按钮后,先调用stop_fun函数。接着隐藏两个动态文本并让“mc”实例(即“主元件”)返回其场景的第1帧。最后“按钮”影片剪辑元件也返回到其场景的第1帧停止。

stop();
bn2.onRelease = function() {
    stop_fun();
    _root.text1._visible = 0;
    _root.text2._visible = 0;
    _root.mc.gotoAndStop(1);
    gotoAndStop(1);
}

  4.打开库,双击“光谱”元件。在其场景中选中“光柱二”元件,按F9键打开“动作”面板,键入如下代码。代码中随机数值的大小可以随意设置。但要注意“光柱二”和“光柱一”元件之间的距离。

// _alpha是影片剪辑的透明度属性
// _yscale属性的作用是使影片剪辑在垂直方向上进行缩放
// Math对象的random方法返回一个大于等于0而小于1的数字。“ramdom(90)”的用法已经不被建议了
onClipEvent (enterFrame) {
    _alpha = Math.random()*60 + 40;
    _yscale = Math.random()*90 + 10;
}



  选中场景中的“光柱一”元件,按F9键打开“动作”面板,键入如下代码。

// _y是影片剪辑的(Y)轴坐标属性
onClipEvent (enterFrame) {
    _y = -Math.random()*6 - 12;
}

  好了,整个效果到这里就设计完成了。测试一下,应该会让你自己吃惊不小的。在效果中,读者可以使用电子表中的显示字体,这样,效果看起来就更逼真些。



-= 资 源 教 程 =-
文 章 搜 索
关键词:
类型:
范围:
纯粹空间 softpure.com
Copyright © 2006-2008 暖阳制作 版权所有
QQ: 15242663 (拒绝闲聊)  Email: faisun@sina.com
 纯粹空间 - 韩国酷站|酷站欣赏|教程大全|资源下载|免费博客|美女壁纸|设计素材|技术论坛   Valid XHTML 1.0 Transitional
百度搜索 谷歌搜索 Alexa搜索 | 粤ICP备19116064号-1