大家好,又见面了(其实天天见,嘿嘿~)这次节目是一次特别节目,主要是为以前"flash声音处理"做个补充,涉及到的有很多是javascript.众所周知midi是一种很重要的网上音乐格式,但在flash里导入不了.这一直是很多朋友想解决的问题.这次节目我们就利用AS和JS的互动实现这一效果.
        同样,我们先看下效果:
        其实也不是导入midi只是用AS调用JS播放midi的,我们分两部分来学.
  第一部分:Flash部分
           第一步,新建一个名为start的button,写上"midi on"(我使用的图片,所以hit里没有另设热区).再建立一个MC命
      名为"start control",放入刚才建的button(start).在button上加AS:
                    on (release) {
                    getURL ("Javascript: startmusic ()");
                    }
      然后,放入Scene,调整一下位置,设定InstanceName为start control

          第二步,同样的建立stop(button),写上"midi off",不同的是这个按钮不需要置入到MC里.把stop也拖入Scene,
       调整好位置,加上AS:
                    on (release) {
                    getURL ("Javascript: stopmusic ()");
                    tellTarget ("/start control") {
                      }
                    }

          这就完成了flash部分,当然你也可以做些修饰,自行发挥.flash原码


  第二部分:Javascript部分
      这一部分,我就不细讲了(也讲不好)主要就是使用Javascript: stopmusic (),Javascript: startmusic ()两个语句.我直接
    把整张叶的代码公开.改动的地方用特别颜色注明.代码如下:


       
<head>
<title>叶名</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<script language="JavaScript">
function MM_controlSound(sndAction,_sndObj) {
var sndObj = eval( _sndObj );
if (sndObj != null) {
if (sndAction=='stop') {
sndObj.stop();
} else {
if (navigator.appName == 'Netscape' ) {
sndObj.play();
} else {
if (document.MM_WMP_DETECTED == null) {
document.MM_WMP_DETECTED = false;
var i;
for( i in sndObj )
if ( i == "ActiveMovie" ) {
document.MM_WMP_DETECTED = true;
break; }
}
if (document.MM_WMP_DETECTED)
sndObj.play();
else if ( sndObj.FileName )
sndObj.run();
}}}}
</script>
</head>

<script language="JavaScript">
function startmusic(){
MM_controlSound('play','document.CS930346114680','midi文件名.mid') }
</script>

<script language="JavaScript">
function stopmusic(){
MM_controlSound('stop','document.CS930346114680','midi文件名.mid') }
</script>

<body bgcolor="#FFFFFF"> <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#3,0,0,0"
width="91" height="67"> <param name="SRC"
value="swf文件名.swf"> <embed src="swf文件名.swf"
pluginspage="http://www.macromedia.com/shockwave/download/" type="application/x-shockwave-flash" width="91" height="67"> </embed> </object>
<EMBED NAME='CS930346114680' SRC='midi文件名.mid' LOOP=true AUTOSTART=false MASTERSOUND HIDDEN=true WIDTH=0 HEIGHT=0> </EMBED>
</body>
</html>

          

          红色的是名为MM_controlSound的一个js程序.加在<head>标记之间.
          两段蓝色的js代码是js和AS交互的接口.
          <EMBED>标记之间的是midi音乐的设定.
          紫色部分自行修改.


    好了,完成了,总结一下.这个效果主要就是利用geturl调用js控制midi播放.拓宽了我们的思路.利用这个效果我们可以做一个flash的midi播放器,有选歌功能.大家想想应该怎么做.做出来的可以帖出来,讨论一下.好这次节目就到这里谢谢收看!~

蓝色理想    经典论坛版权所用
Aero-lk主持
"Step by step和Aero-lk学原码"
2001.6.23