文章探索:   分类:    关键字:  
  + 栏目导航
  + 相关文章
未公开的Flash MX使用摄像头和麦克风..
flash摄像头拍照实现原理分析
Flash 8 摄像头拍照
用FLASH操作并控制摄像头
尝试在Flash MX中轻松应用摄像头
让Flash听话:Flash与麦克风的互动
Flash的压缩算法
FLASH脚本语言详解
简单实用的Flash技巧心得
Flash动画下载全攻略
一些Flash经验法则
Flash 缓存问题的解决
FLASH游戏制作基础:响应键盘的四种方..
如何防止SWF文件被反编译?
巧妙提取Flash文件中的素材
实现声音与歌词同步的三种方法
鼠绘技术内幕完全接触-概述篇
鼠绘技术内幕完全接触-动物篇
鼠绘技术内幕完全接触-环境背景篇
鼠绘技术内幕完全接触-效果篇
鼠绘技术内幕完全接触-植物篇
让Flash课件在VCD上播放
Flash中水的形成思路和方法
超简单flash+asp+access计数器
徒手轻松保存网页中的Swf动画
flash上加htm链接的技巧
教你怎么样用Flash来制作马赛克效果
Flash作品的播放保护
将AutoCAD导入Flash
Flash全屏效果全攻略


技术教程 -> FLASH教程 ->  
实现声音与歌词同步的三种方法
来源:PConline   人气:1724   录入时间:2007-11-8
     1. 目的:
   
   学习Flash中的Sound凼数,掌握在制作FlashMTV时声音与歌词同步的两种方法。
   
   2. 方法一:
   
   ·导入一个声音文件,建立一个声音层,在声音层的第一帧处打开声音面板,选择需要使用的声音文件,设置声音同步属性为数据流,循环次数为0,如图(1)所示:
   
   
   ·估计声音层所用的帧数,帧数=播放时间*帧频。大家再看右图的最下面,其中“16.8 s”表示这段音乐的播放时间为16.8秒。如果你的帧频为12fps,那么总帧数应该为200帧左右。
   
   ·在适当位置按F5插入一个空白关键帧。拖动声音层的最后一帧(相对的)直到有空白帧出现,单击选择声音的最后一帧,再向右拖动鼠标选择所有的空白帧,然后单击右键,点击清除帧,如图(2)所示。
   
   
   ·建立一个文本动画层,按回车键播放声音,由于声音是数据流形式,你可以参照声音在该层上添歌词。
   
   3.方法二:
   
   ·第一步,同方法一,只是声音同步属性为默认的事件同步。
   
   · 建立一个文字动画层,对照声音的波形,在声音的波谷处添上相应的歌词。通常情况下,我们在时间线面板上看到的波形很不明显,无法确定波谷。别着急,点击图(3)的编辑按钮。这里我们不是编辑声音,而是观察波形。默认状态下,在声音编辑面板看到的波形与在时 间线面板上看到的一样。 点击面板下方图(3)所示的缩小按钮,缩小波形图,我们可以看到图(4)所示的波形图,红线所处的地方均是波谷,第一个波谷很明显在第一帧。
   
   
   ·波形图的标尺默认的是以时间秒为单位,得使用“帧数=播放时间*帧频”来计算。为了方便,我们设置帧为标尺单位,点击图(3)第四个按钮就行了。见图(4),我们可以发现第二个波谷应在第80左右。如果要求精确,,点击扩大按钮,就可以准确知道该是第几帧了。
   
   ·在第一帧添第一句歌词,在第二个波谷所在帧的下一帧开始添第二句歌词,其它依次类推。
   
   4. 方法三:
   
   ·导入一个声音文件,建立一个文本动画层,接着写进歌词,每一帧对应一句歌词。
   
   ·新建一个空白角本电影夹。
   
   ·建立一个角本层。在第一帧拖入空白角本电影夹,并加入帧角本stop,如图(4):
   
   在图库面板中右键点击我们要使用的声音文件,从弹出菜单中选择连接,选择链接选项中“为动作脚本导出”和“在第一帧导出”,然后就在标识符输入框中键入myMusic,从而关联这个声音。 如图(5):
   
   
   选择空白角本电影夹,写入如下代码:
   
   onClipEvent (load) {      //一下载电影夹就触发事件
   music = new Sound();     //自定义一个“music”声音对象
   music.attachSound("myMusic"); //捆绑声音,myMusic为被关联声音的ID
   music.start();        // 播放声音
   inc = 0;           // 定义变量,赋予初值
   timerStart = getTimer();   // 定义刚开始播放声音的时间与现在的时间的时间相等。
   labelTimeList = [4, 8, 11, 15];
   // 自定义一个数组来设定每句歌词出现的时间(单位为秒),可用Media Player来获取每一元素的值。
   }
   onClipEvent (enterFrame) {  //只要电影夹存在就触发事件
   if (getTimer()-timerStart>labelTimeList[inc]*1000) {
   //读取现在的时间,与刚开始的时间做比较,如果大于所设定的时间,
   则跳到下一帧,即为播放下一句歌词
   inc == inc++;
   _root.nextFrame();
   }
   }
   
   5. 说明:
   
   方法一很方便,不过容易在播放时丢帧;方法二最为烦琐,适合用来做波形明显的FlashMTV;方法三简单明了,针对高级用户。




Copyright(C)2007-2024 广州市佳沛数码科技有限公司 版权所有
公司地址: 广州市荔湾区东漖北路560号511室
电话:020-81803473 传真:020-81544987