使用SWFObject2.2.js让网页播放消息提示音(附源码下载)

非 Y 不嫁゛ 提交于 2020-02-18 07:20:16

      最近在优化毕业设计时,突然想起当收到聊天信息时,没有通知提醒的声音,所以在网上找了一些相关的播放声音的插件,由于SWFObject相当轻量化(只有10K),而且实现起来还是挺方便的,所以决定使用SWFObject.js 来实现这个小功能。

一、准备工作

1.  下载 swfobject2.2.zip

2.  下载一个能播放mp3格式消息声的swf文件,我们接下来的主要工作是控制这个swf文件来播放消息音乐。

别急,以上两个文件包 在文章结尾附下载   微笑

二、开始

根据官方网站上介绍,使用SWFObject有两种方法可以插入flash文件到网页上。(第一种方法只略作介绍)

第一种方法:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>SWFObject - step 3</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
    swfobject.registerObject("myId", "9.0.115", "expressInstall.swf");
</script>
</head>
<body>
    <div>
      <object id="myId" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="780" height="420">
        <param name="movie" value="myContent.swf" />
        <!--[if !IE]>-->
        <object type="application/x-shockwave-flash" data="myContent.swf" width="780" height="420">
        <!--<![endif]-->
          <p>Alternative content</p>
        <!--[if !IE]>-->
        </object>
        <!--<![endif]-->
      </object>
    </div>
</body>
</html>

该方法首先要在网页文件中写好object标签及相关参数,然后在页面载入时调用 swfobject.registerObject 注册该对象。虽然这种方法能获得较好的嵌入flash文件的性能,但由于需要事先写好<object>这段代码,对于实现播放消息通知声音这个小功能来说,没有太大的性能需求,这里只略作介绍。

第二种方法:

先放上代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>SwfObject2.2Demo</title>
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
    var flashvars = {};
    var params = {
        wmode: "transparent"
    }; 
    var attributes = {};
    swfobject.embedSWF("sound.swf", "sound", "1", "1", "9.0.0", "expressInstall.swf", flashvars, params, attributes);

    function play(c) {
        var sound = swfobject.getObjectById("sound");
        if (sound) {
            sound.SetVariable("f", c);
            sound.GotoFrame(1);
        }
    }
</script>
</head>
<body>
<div id="sound">
</div>
<input type="button" value="播放" onclick="play('msg.mp3')" />
</body>
</html>

我们首先需要在网页中写一个有id属性的<div>层,然后在页面载入时调用swfobject.embedSWF方法即可动态产生一个object替换掉div层,从firebug中查看网页源代码

<body>
<object width="1" height="1" type="application/x-shockwave-flash" data="sound.swf" id="sound" style="visibility: visible;">
<param name="wmode" value="transparent">
</object>
<input type="button" onclick="play('msg.mp3')" value="播放">
</body>

从产生的代码中很容易就可以看出该方法是第一种方法的简化版。下面先来说说swfobject.embedSWF 方法里面的设置参数swfobject.embedSWF方法的语句格式为:

swfobject.embedSWF(swfUrl, id, width, height, version, expressInstallSwfurl, flashvars, params, attributes, callbackFn)

其中前5个参数是必须的,后5个参数是可选的

swfUrl:嵌入的flash的路径,即该例子中sound.swf的路径。

id:是我们在网页中写的那个<div>层的id。

width,height:嵌入的flash的宽、高。

version:这个参数是嵌入的flash发布时的版本。

expressInstallSwfurl:这里填入 expressInstall.swf  文件的路径。当用户的浏览器的flash版本低于versioin的值时,启动该flash来下载最新的flash,而且该flash只在第一次触发时启动。

flashvars:该参数是传入到flash文件里面使用的,在我们这个例子中,就是动态的设置这个参数来传入要播放的mp3文件。

params:有下列这些可选项

  • play
  • loop
  • menu
  • quality
  • scale
  • salign
  • wmode
  • bgcolor
  • base
  • swliveconnect
  • flashvars
  • devicefont
  • allowscriptaccess
  • seamlesstabbing
  • allowfullscreen
  • allownetworking

我们这里只用到了wmode,设置该选项为transparent,设为transparent不至于让flash悬浮在页面顶层。

attributes:有下列这些选项

  • id
  • align
  • name
  • styleclass
  • class

callbackFn:无论是否成功添加<object>到页面中,都会触发该回调函数。

简单的了解swfobject.embedSWF方法后,就可以实现播放消息声音的功能了。

我们可以看到

function play(c) {
        var sound = swfobject.getObjectById("sound");
        if (sound) {
            sound.SetVariable("f", c);
            sound.GotoFrame(1);
        }
}

这段函数中,swfobject.getObjectById是取得<object>对象,获得该对象后,我们就可以控制该flash文件了。

这里sound.SetVariable("f", c)是动态地设置传入到flash的参数,而设定 f,是由于该flash设定了传入变量名称  f 为mp3文件的路径。(即变量名称必须为 f,才能有效果)

sound.GotoFrame(1)的意思是转到该flash文件的第一帧,这里可能需要一点flash知识才能明白,不过应该不影响该例子的描述。

最后,只要点击播放按钮,就可以听到消息声音了。

 

三、总结

虽然没什么技术含量,但是可以锻炼下写文章的技巧。感觉一个简单的小功能让自己说复杂了,还望见谅。

如有错误,欢迎指正,谢谢。

 

四、相关下载

SwfObjectDemo

swfobject_2_2.zip

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!