查看文章 |
关于升级flash10后,用js控制播放声音的巧妙解决方法
2008-11-16 13:03
我不是专职flash,甚至能说对flash一窍不通。不过为了解决项目中的问题,有时就翻翻手册写那么几行。 自从万恶的flash9被忽然升级到flash10后,问题出现了,先是上传不能用,这个好解决,把按钮变成flash的就好了。但接着就是用js控制播放声音也不能用,这个必须用js控制,后来发现dict.cn很好的解决了这个问题,查看到了它的js文件中有个gotoFrame(1)类似这样的js函数,于是受到启发,通过用js控制flash播放到第几帧,不就可以巧妙的解决吗? 于是把之前用文档类写的声音flash改成了在帧中写action. 1.新建一文档,在第一帧写: import flash.display.Sprite; import flash.events.*; import flash.media.Sound; import flash.media.SoundChannel; import flash.net.URLRequest; import flash.external.*; import flash.system.Security; flash.system.Security.allowDomain("xxx.com"); //你的域 var url="http://www.xxx.com/test.mp3"; //声音文件 ExternalInterface.addCallback("playSong",function(){gotoAndPlay(1);}); //让js通过playSong()来调用 var request:URLRequest = new URLRequest(url); var soundFactory:Sound = new Sound(); soundFactory.load(request); soundFactory.play(); gotoAndPlay(2); stop(); 2.在第二帧写 stop(); 3.编译后 function getFlash(movieName) { if (window.document[movieName]) { return window.document[movieName]; } if (navigator.appName.indexOf("Microsoft Internet")==-1) { if (document.embeds && document.embeds[movieName]) return document.embeds[movieName]; } else { return document.getElementById(movieName); } } 通过以下js代码,即可实现在flash9,flash10中播放声音 try{ getFlash("swfid").playSong(); }catch(e){ } 谁有更好的方案请告知。 |
最近读者: