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

本文探讨了在影片剪辑中处理时间轴上声音的问题,特别是在播放进度条存在的情况下,如何避免声音断续播放。通过创造一个新的影片剪辑实例并监听播放头位置,当播放头不在目标影片剪辑范围内时,停止该新实例,从而解决声音播放不连续的问题。同时介绍了MovieClip类中soundTransform属性的使用,可用于管理时间轴上的音量、声道等。分享了解决方案及收获的经验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于项目架构的关系,会在时间轴上加声音流,跟动画匹配,有时候会做到影片剪辑里。如果是线性的播放完全没有问题,但是遇到有播放进度条,可以跳帧,问题就出现了:播放头刚到含有声音的影片剪辑,通过调整进度条,主时间轴一下子跳过了这个影片剪辑所在的帧——导致,画面变了,但是之前的影片剪辑里的声音还在播放。。。
不谈这种方式的其他问题,就这一项,我纠结了好久。使用侦听,当播放头不在这个影片剪辑的范围时,就将影片剪辑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;
复制代码
不知道大家是否遇到过这样的问题,有没有更好的解决方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值