当前位置: 代码迷 >> Web前端 >> [转] 影片剪辑中时间轴下的声音处理
  详细解决方案

[转] 影片剪辑中时间轴下的声音处理

热度:141   发布时间:2012-08-28 12:37:01.0
[转] 影片剪辑中时间轴上的声音处理

http://bbs.9ria.com/viewthread.php?tid=97727&extra=page%3D1%26amp%3Borderby%3Ddateline%26amp%3Bfilter%3D2592000


[心得]?影片剪辑中时间轴上的声音处理

由于项目架构的关系,会在时间轴上加声音流,跟动画匹配,有时候会做到影片剪辑里。如果是线性的播放完全没有问题,但是遇到有播放进度条,可以跳帧,问题就出现了:播放头刚到含有声音的影片剪辑,通过调整进度条,主时间轴一下子跳过了这个影片剪辑所在的帧――导致,画面变了,但是之前的影片剪辑里的声音还在播放。。。
不谈这种方式的其他问题,就这一项,我纠结了好久。使用侦听,当播放头不在这个影片剪辑的范围时,就将影片剪辑stop,这当然不行,因为跳过了影片剪辑,它的实例名就是null了
鉴于在时间轴上的声音,没法使用SoundChannel,soundTransform里又没有关闭声音的方法
最后,灵光一闪,解决的居然很轻巧
代码创建一个影片剪辑,将需要停止的影片剪辑斌给新剪辑,然后在侦听的时候stop这个新建的影片剪辑,居然成了。。。
  1. var newMc:MovieClip = oldMc;
  2. //含有声音的影片剪辑在主时间轴的开始帧和结束帧
  3. var startFrame:int = 56;
  4. var endFrame:int = 1902;
  5. addEventListener(Event.ENTERFRAME,isJumpOldMc);
  6. function isJumpOldMc(e=null)
  7. {
  8. if(this.currentFrame>endFrame||this.currentFrame<startFrame) newMc.stop();
  9. }
复制代码
真是很叹息,原来只需要小拐一个弯就成事了~
收获了一件事,就是注意到MovieClip类居然有soundTransform,可以用来管理时间轴上的音量、声道等等,以前真没发现
  1. var mc:MovieClip = new MovieClip();
  2. ? ? ? ? ? ? ? ? var stransf:SoundTransform = mc.soundTransform;
  3. ? ? ? ? ? ? ? ? stransf.volume = 0.6;
  4. ? ? ? ? ? ? ? ? mc.soundTransform = stransf;
复制代码
不知道大家是否遇到过这样的问题,有没有更好的解决方法

  相关解决方案