原创 attachSound在loadMovie后失效的問題收藏

新一篇: 關於flash中的垃圾回收 | 旧一篇: Cool Flash Site: vitorvilela

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

現象
採用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支持

发表于 @ 2004年11月17日 18:52:00|评论(loading...)|编辑

新一篇: 關於flash中的垃圾回收 | 旧一篇: Cool Flash Site: vitorvilela

评论

#zjs35 发表于2004-11-18 15:56:00  IP: 218.75.103.*
感谢青蛙,学了一招
#ding8285 发表于2004-12-22 11:12:00  IP: 222.240.20.*
thx 很早以前不知道怎么解决的 闪吧也很多人问过这个问题
发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © qhwa