知识大全 用JavaScript实现利用FLASH嵌入网页声音

Posted

篇首语:心宽一寸,路宽一丈,若不是心宽似海,哪有人生风平浪静。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 用JavaScript实现利用FLASH嵌入网页声音相关的知识,希望对你有一定的参考价值。

用JavaScript实现利用FLASH嵌入网页声音  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

本JavaScipt教程将让你感受到FLASH给您带来有声世界的无穷魅力 在开始本教程之前 我先介绍一下本教程涉及到的内容 隐藏嵌入的SWF 播放流同步的SWF 从指定的帧上开始流 停止和播放流 检查是否磁道在播放 检查是否播放器准备好 检查SWF转载的百分比 验证SWF是否完全装载好 检查播放器的版本号 设置最小的播放器版本号 清除错误信息等等 好吧 开始我们的教程吧

  隐藏嵌入的SWF

  FlashSound的JavaScript API往网页插入一个FlashSound对象 随同插入还有embedSWF()方法 但是在网页中我们为什么不能看到这个对象呢?哦 原来是FlashSound隐藏了这个对象 在Internet浏览器中 FlashSound是这个对象变得透明 也就是说你看不到这个对象 但实际上它是存在的 而在Netscape浏览器中 这个对象的颜色被指定为跟网页相同的颜色 所以你也看不到它 你可以在Netscape浏览器中通过使用bgcolor属性来设置对象的颜色 以上两种方法正是隐藏对象的核心所在 试一试吧 下面我的代码是实现当鼠标移过对象时播放scale swf文件 所以我们这样来创建FlashSound对象

  mySoundObj bgcolor = # ff ;

  mySoundObj embedSWF( scale swf );

  

  下面的代码可以让你在Netscape浏览器中看到在 Play a Scale 下面有一个小点 它正是我们创建的FlashSound 因为此时它的颜色不是与网页的背景色相同 看看代码吧

  

  var mySoundObj = new FlashSound();

  

  

  

  onmouseover= mySoundObj TGotoAndPlay( /scale event start ) >

  Play a Scale

  mySoundObj bgcolor = # ff ;

  mySoundObj embedSWF( scale swf );

  

  播放流同步的SWF

  Flash文件格式支持四种同步的类型 Event(事件) Start(开始)Stop(停止)和Stream(流) 事件同步允许你同时播放多个磁道的声音 开始同步可以避免并行的磁道播放 停止同步作用是停止磁道播放 而对于流同步声音包含了声音的帧尺寸样式 它可以反复地天衣无缝地播放 不象其它真实的流声音格式(比如Real Audio) Flash流文件是在播放的时候装载到浏览器中去的 当播放结束的时候 这个流声音就全部被装载浏览器的高度缓冲区中 所以在接下去的播放是来源与浏览器的告诉缓冲区 而不是来源于网页

  以下的连接是播放一个流同步 它解释了FlashSound的JavaScript API 代码如下

  

  var mySoundObj = new FlashSound();

  

  mySoundObj embedSWF( earsonly swf );

  

  这里值得注意的是Flash声音被设置在Flash编辑器中来自动开始播放 从指定的帧上开始流 FlashSound的JavaScript API支持象CD播放器那样的随机访问磁道中任何帧的能力 所以你可以指定任意的帧好来播放你喜欢的声音

  如图 所示的四个连接是连到一个典型的CD播放器控制面板上 第一个连接是回到第一帧开始播放 第二个连接是否从第 帧处开始播放 第三个连接是从第 帧处开始播放 而第四个连接是暂停所有的播放

  

  (图 )

  详细的代码如下

  

  var mySoundObj = new FlashSound();

  

  

  onmouseover= mySoundObj TGotoAndPlay( / ) >

  从第 帧开始播放

  

  onmouseover= mySoundObj TGotoAndPlay( / ) >

  从第 帧开始播放

  

  onmouseover= mySoundObj TGotoAndPlay( / ) >

  从第 帧开始播放;

  

  onmouseover= mySoundObj TStopPlay( / ) >

  暂停<

  mySoundObj autostart = false;

  mySoundObj embedSWF( earsonly swf );

  

  这里我们将autostart(自动开始播放)设置为Flase 这个例子很好地说明了我们怎样利用JavaScript来重载Flash行为

  停止和播放流

  FlashSound的JavaScript API支持一个等价于暂停的方法 即TStopPlay() 这个TStopPlay()方法有一个参数 即timeline(时间线) 我们可以使用 / (反斜线)来指定主时间线 TStopPlay()可以在指定的时间线上停止向前播放 而不会重新播放 值得指出的是 这个TstopPlay()方法只能停止了设置为流同步的声音的播放 而不能设置为时间或者开始同步的声音的播放

  同样 FlashSound的JavaScript API页支持等价于播放的方法 即TPlay() 这个TPlay()方法也有一个参数 也为时间线 类似地 我们可以使用 / 来指定主时间线 TPlay()可以在被TStopPlay()停止播放的帧处的时间线(传递给TPlay()的参数)上开始播放 或者从第一帧开始播放 这个TPlay()方法也只能开始播放被设置为流同步的声音 也不能开始播放被设置为时间同步或者开始同步的声音

  

  (图 )

  如图 所示的三个连接是连到典型的磁带录音机控制面板上 第一个连接是利用TGotoAndPlay()重新播放 第二个连接是利用TStopPlay()来暂停播放 而第三个连接是利用Tplay来继续播放被暂停在某处的声音 详细的代码如下

  

  var mySoundObj = new FlashSound();

  

  重新开始播放

  暂停播放

  继续播放

  mySoundObj autostart = false;

  mySoundObj embedSWF( earsonly swf );

  

  检查是否磁道在播放 FlashSound的JavaScript API可以让你检查磁道是否在播放 为了做到这点它为了提供了IsPlaying()方法 这个IsPlaying()方法没有任何参数 它只是在有磁道在播放的时候才返回True(真) 否则就返回False(假) 所以你可以利用这个方法来创建一些例子 比如你可以在声音磁道没有播放的情况下在另外一个磁道播放声音 这个实现起来是很简单的

  如图 所示的前三个连接是连到典型的磁带录音机控制面板 而右边的连接是检查在时间上是否有磁道在播放 当鼠标移过它的时候 我们就可以获得 是否播放 的答案了 在图 中第二行的连接是播放一个scale音乐 但是它只能在教程音乐没有播放的时候才播放 为了实现这个目的 我们来检查教程音乐的IsPlaying()的值是否为False 这里教程音乐对象为mySoundObj 而scale音乐对象是mySoundObj 所以实现以上功能的语句应该为

  if (!mySoundObj IsPlaying()) mySoundObj TGotoAndPlay( /scale event start )

  好吧 我们可以试一试我们的这几个连接了 首先开始播放我们的教程音乐 在停止该该教程音乐以播放scale音乐 然后在继续教程音乐 这时候你会发觉scale音乐停止了

  

  (图 )

  具体源代码如下

  

  var mySoundObj = new FlashSound();

  var mySoundObj = new FlashSound();

  

  

  

  onmouseover= mySoundObj TGotoAndPlay( / ) >播放教程音乐

  

  onmouseover= mySoundObj TStopPlay( / ) >暂停播放

  

  onmouseover= mySoundObj TPlay( / ) >继续播放

  

  onmouseover= alert(mySoundObj IsPlaying( / )) >是否播放

  

  onmouseover= if (!mySoundObj IsPlaying()) mySoundObj TGotoAndPlay( /scale event start ) >播放Scale音乐

  mySoundObj autostart = false;

  mySoundObj embedSWF( earsonly swf );

  mySoundObj embedSWF( scale swf );

  

  检查是否播放器准备好

  FlashSound的JavaScript API的isPlayerReady()方法在浏览器识别到播放器和JavaScrip对象并且SWF至少被装载一个帧上的时候就返回True(真值) 如果不是这样的话就返回False FlashSound API是在所有其它API方法调用之前执行这个方法 所以你不用担心多次使用它会有什么问题的 但是你在调用一个Flash方法的时候 你必须使用isPlayerReady() 因为Flash方法不是FlashSound的 JaScript API的一部分

  如图 所示的连接是播放一个Flash流磁道 它在FlashSound上播放一段教程音乐 我们可以增加两条语句来实现 第一条 在嵌入教程音乐之前 我们打印出isPlayReady()的数值 第二条 在嵌入教程SWF之后打印出isPlayerReady()的数值 这样我们可以看看这两次的区别 从打印的结果我们可以发现 在嵌入教程音乐之前 isPlayReady()的值是False 而在嵌入教程音乐之后 其值是True

  

  (图 )

  下面是详细的代码

  

  var mySoundObj = new FlashSound();

  

  

  

  onmouseover= mySoundObj TGotoAndPlay( / ) >播放教程音乐

  

  onmouseover= mySoundObj TStopPlay( / ) >暂停播放

  

  onmouseover= mySoundObj TPlay( / ) >继续播放

  

  onmouseover= alert(mySoundObj IsPlaying( / )) >是否播放

  alert( Before Embedding isPlayerReady() returns +

  mySoundObj isPlayerReady());

  mySoundObj autostart = false;

  mySoundObj embedSWF( earsonly swf );

  alert( After Embedding isPlayerReady() returns +

  mySoundObj isPlayerReady());

  

  检查SWF转载的百分比 FlashSound JavaScript API的PercentLoaded()方法返回SWF装载到浏览器的百分比 这个数值可以是从 到 的任意值 如果你装载一个SWF(当然包括流同步磁道)到网页的时候这个数值都将小于等于

  点击如图 所示的连接就可以播放一个Flash流磁道 它是一个FlashSound的教程音乐 对于上面的代码语句我们也只需要修改两条语句 第一条 在嵌入教程音乐的之前打印出PercentLoaded()的数值 第二条 在嵌入教程音乐SWF之后打印这个数值 从结果中你可以发现 在嵌入教程音乐之前 PercentLoaded()的数值为 而在嵌入教程音乐完毕之后 这个数值为

  

  (图 )

  以下是具体代码

  

  var mySoundObj = new FlashSound();

  

  

  

  onmouseover= mySoundObj TGotoAndPlay( / ) >播放教程音乐

  

  onmouseover= mySoundObj TStopPlay( / ) >暂停播放

  

  onmouseover= mySoundObj TPlay( / ) >继续播放

  

  onmouseover= alert(mySoundObj IsPlaying( / )) >是否播放

  alert( Before Embedding PercentLoaded() returns +

  mySoundObj PercentLoaded());

  mySoundObj autostart = false;

  mySoundObj embedSWF( earsonly swf );

  alert( After Embedding PercentLoaded() returns +

  mySoundObj PercentLoaded());

  

  验证SWF是否完全装载好

  FlashSound JavaScript API的Tloaded方法返回SWF是否已经完全装载到浏览器 这个数值可以为False或者True 当你往网页嵌入你的SWF文件(当然包括流同步磁道)的时候 它返回Fasle值 只能等到装载完毕的时候才返回True值

  点击如图 所示的连接 就将播放一段Flash流磁道 即FlashSound中的教程音乐 当然我们对上面的代码要修改两个地方 第一 在嵌入教程音乐之前打印Tloaded()的数值 第二 在嵌入教程音乐之后打印Tloaded()的数值 此时 从结果中你可以发现 在嵌入教程音乐之前 TLoaded()的数值为False值 而在嵌入教程音乐完毕之后 这个数值为True值

  

  (图 )

  具体修改的代码如下

  

  var mySoundObj = new FlashSound();

  

  

  

  onmouseover= mySoundObj TGotoAndPlay( / ) >播放教程音乐

  

  onmouseover= mySoundObj TStopPlay( / ) >暂停播放

  

  onmouseover= mySoundObj TPlay( / ) >继续播放

  

  onmouseover= alert(mySoundObj IsPlaying( / )) >是否播放

  alert( Before Embedding TLoaded() returns +

  mySoundObj TLoaded());

  mySoundObj autostart = false;

  mySoundObj embedSWF( earsonly swf );

  alert( After Embedding TLoaded() returns +

  mySoundObj TLoaded());

  

  检查播放器的版本号 随着Flash播放器的飞速发展 你可能很想知道你的Flash播放器的版本号是多少 值得庆幸的是 FlashSound JavaScript API就支持检查播放器的版本号 这是FlashSound对象的一个属性 为了得到这个数值 你需要编写以下的代码语句

  FlashSound playerVersion

  这个属性应该设置为只读 虽然你可以指定它的数值 但是为播放器版本号指定一个数值久将导致一个错误 为了得到播放器的版本号 我们不必做任何事情而只需包括FlashSound JavaScript代码 即flashsound js 移动鼠标到如图 所示的连接就可以得到播放器的版本号

  

  (图 )

  以下是具体的代码

  

  

  

  onmouseover= alert(FlashSound playerVersion) >播放器的版本号

  有时候 你可能想限制一下你的手稿程序来确定Flash播放器的版本号 你可以利用FlashSound对象的setMinPlayer()方法来实现它 FlashSound JavaScript API为你提供了许多强大的功能 你可以指定一个条代码来执行当现有的播放器的版本号低于播放器的最小版本号的处理

  下面让我们来验证一下ifNotMinPlayer()方法是如何工作的 因为最高的播放器版本号是 所以我们将最小的播放器版本号设置为 来测试一下这种方法 这个方法ifNotMinPlayer()应该是在setMinPlayer()方法之后被使用的 点击如图 的连接可以看一下这种新方法的演示

  

  (图 )

  为了设置最小的播放器版本号为 我们可以使用语句 setMinPlayer( ) 并调用ifNotMinPlayer()以及带有一个参数的函数downloadRecentPlayer() 这个downloadRecentPlayer()函数会提示你下载较新版本的播放器

  以下是具体实现的代码

  

  

  设置最小的播放器版本号 有时候 在编写一个独立版本的手稿程序要花费许多时间 所以 你可能会选择一种高于最小版本号的版本 通常 你可能会选择最新的播放器版本 所以 就有这样一个问题 为什么我们要处理那些老版本的播放器呢?你可以利用setMinPlayer()方法来设置最小版本号 它唯一的一个参数是版本号

  下面让我们来验证以下setMinPlayer()是如何工作的 因为最好的版本号是 我们当我们设置最小的版本号为 的时候 播放器将不会发出声音

  如图 所示的三行的连接会向我们展示这所有的一切 第一行第一个连接示设置最小的版本号为 第二个示设置播放器的最小版本号为 这是就会使得播放器不会发出声音 你马上可以试一试

  

  (图 )

  以下是具体代码

  

  var mySoundObj = new FlashSound();

  var mySoundObj = new FlashSound();

  

  

  

  onmouseover= FlashSound setMinPlayer( );

  alert( 播放器最小版本号被设置为 ) >

  设置播放器最小版本号为

  

  onmouseover= FlashSound setMinPlayer( );

  alert( 播放器最小版本号被设置为 ) >

  设置播放器最小版本号为

  

  onmouseover= mySoundObj TGotoAndPlay( / ) >播放教程音乐

  

  onmouseover= mySoundObj TStopPlay( / ) >暂停播放

  

  onmouseover= mySoundObj TPlay( / ) >继续播放

  

  onmouseover= alert(mySoundObj IsPlaying( / )) >是否播放

  

  onmouseover= if (!mySoundObj IsPlaying()) mySoundObj TGotoAndPlay( /scale event start ) >播放Scale音乐

  mySoundObj autostart = false;

  mySoundObj embedSWF( earsonly swf );

  mySoundObj embedSWF( scale swf );

  

  清除错误信息 清除错误信息在所有的编程语言中都是一个值得讨论的题目 通常它是一个令程序员头痛的事情 对于一个程序也许你都有这样的感受 当你编制程序的时候发现一个错误 你一定会兴奋不已 或者你检查了多遍程序还是发现不了错误存在的地方 同样会令你烦恼 因为这是一个很严谨的题目 所以就让你自己去决定了 毫无疑问 对于一个编程的新手来说 错误信息是一个很重要的内容 因为你需要根据这个错误信息来调试你的新手稿程序

  利用FlashSound JavaScript API你可以选择是否清除错误信息 具体是利用FlashSound 对象的muteErrorMsg属性 为了保留错误信息 你需要将这个属性设置为False 如果想在调试阶段还是将它设置为True 其实缺省值就是True 一旦设置为true 错误信息就将被清除

  下面的JavaScript代码包含了一个错误 因为有一个变量没有被定义

  

  我们可以为这个JavaScript错误选择保留或者清除这个错误信息 下面的手稿程序是清除错误信息

  

  如果要保留错误信息 那么手稿程序如下

  你可以点击如图 的两个连接来看这两个文件的演示

  

  (图 )

  具体实现保留错误信息的代码如下

  

  

  具体实现清除错误信息的代码如下

  

cha138/Article/program/Java/Javascript/201311/25482

相关参考

知识大全 有没有把js做的效果导出成swf格式的工具或方法啊,或者直接嵌入flash中的方法

有没有把js做的效果导出成swf格式的工具或方法啊,或者直接嵌入flash中的方法?急死了,求高手指导啊!没有,只能是用FLASH代码仿照着做出来差不多的效果,不能直接用,也没有这种软件有没有把卡巴嵌

知识大全 用Javascript自动输出网页文本

用Javascript自动输出网页文本  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在网页中经

知识大全 用JavaScript改进你的网页框架

用JavaScript改进你的网页框架  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!有两种网页设计

知识大全 用JavaScript代码给网页热键功能

用JavaScript代码给网页热键功能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  <

知识大全 用Javascript使网页图片产生旋转效果

用Javascript使网页图片产生旋转效果  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Ro

知识大全 如何用Javascript调用Flash动画

如何用Javascript调用Flash动画?  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  问

知识大全 禁止用右键查看源代码

做网页的朋友都会遇到这种情况有时自己辛苦半天做的网页尤其是一些JavaScript特效很容易被人利用查看源文件而复制那么如何才能防止被人查看源代码呢?我们可以利用eventbutton特性来做到下表是

知识大全 在JavaScript里嵌入大量字符串常量的实现方法

在JavaScript里嵌入大量字符串常量的实现方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 JavaScript实现酷“网页时钟”

JavaScript实现酷“网页时钟”  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  只须将如下

知识大全 Javascript实现刷新网页代码汇总

Javascript实现刷新网页代码汇总  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  hist