attachSound在loadMovie后失效的問題

不久之前的一個討論,整理一下。

現象
採用attachSound方法創建的聲音,如:

var mySound = new Sound();
mySound.attachSound("soundLinkageID");
mySound.start();
在單獨播放時候很正常,可是一旦被loadMovie,就失效了。

原因
attachSound是從庫中複製聲音到舞臺。而loadMovie后存在多個庫,想從一個沒有包含聲音的庫中得到聲音,自然不會成功。那麼究竟是從哪個庫中複製呢?測試證明,是綁定聲音對象的影片剪輯對應的庫。所謂的綁定聲音的mc,就是創建聲音對象時用到的參數:

var mySound = new Sound( mc);

如果缺少參數,則是創建全局聲音。(原先誤以為是默認取_root,其實是不對的)

這個是Flash2004幫助裏面的一個示例
下面的示例创建名为 global_sound 的新 Sound 对象。示例中的第二行调用 setVolume() 并将影片中的所有声音的音量调整为 50%。

global_sound = new Sound();
global_sound.setVolume(50);
此時的庫是主swf對應的庫,而主swf中的庫自然沒有要複製的聲音了,這便是問題所在。

解決方案
創建聲音時指定綁定mc。
如果是幀上的AS,用 var mySound = new Sound(this) 即可。
或者強制令 _lockroot為true,然後 var mySound = new Sound(_root)
需要注意的是_lockroot需要flashPlayer7支持

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值