【转载】Flex调用外部JS实现播放语音文件功能

一、新建JS文件:
         var intervalId;

        //检查播放状态,状态等1时为文件播放完毕,播放完毕后就调用AS的func_Callback()方法
        function checkState(){
                 if(Player.playState == 1){                                                                         // Player为第二步中,<Object>的ID
                         document.getElementById("play").changeState();
                         window.clearInterval(intervalId);
                 }
        }

       //播放wav文件

        function play(){   
                 Player.controls.play();
                 intervalId = window.setInterval(checkState, 100);//每秒调用checkState()方法
         }   


       //暂停播放
       function pause(){
                Player.controls.pause();
      }


       // 停止播放
      function stop(){
                 Player.controls.stop();
      }


        // 获取播放路径
        function getURL(url){
                    Player.URL=url;
}

二、在建好的Flex工程中,在html-template目录下找到index.template.html文件并打开,在head标签中加上如下代码:

    <head>
              <script type="text/javascript" src="js/sound.js"></script>                  //加入JS的路径
              <object id="Player" width=0 height=0 classid="CLSID:6BF52A52-394A-11D3-B153-00C04F79FAA6">
                    <param name="URL" value="">
                    <param name="autoStart" value="0">
                    <param name="balance" value="0">
                    <param name="baseURL" value>
                    <param name="captioningID" value>
                    <param name="currentPosition" value="0">
                    <param name="currentMarker" value="0">
                    <param name="defaultFrame" value="0">   
                    <param name="enabled" value="1">
                    <param name="enableErrorDialogs" value="0">
                    <param name="enableContextMenu" value="1">             
                    <param name="fullScreen" value="0">    
                    <param name="invokeURLs" value="1">
                    <param name="mute" value="0">
                    <param name="playCount" value="1"> 
                    <param name="rate" value="1">
                    <param name="SAMIStyle" value>
                    <param name="SAMILang" value>
                    <param name="SAMIFilename" value>
                    <param name="stretchToFit" value="0">
                    <param name="uiMode" value="none">
                    <param name="volume" value="100">
                    <param name="windowlessVideo" value="0">
             </object>
    </head>

三、在FLEX主应用程序中写如下代码:

      <?xml version="1.0" encoding="utf-8"?>
      <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"  xmlns:s="library://ns.adobe.com/flex/spark"
            xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
              <s:layout>
                       <s:BasicLayout/>
              </s:layout>
             <fx:Declarations>
                           <!-- 将非可视元素(例如服务、值对象)放在此处 -->
             </fx:Declarations>
             <fx:Script>
                     <![CDATA[
                                private function plays():void{
                                            ExternalInterface.addCallback("changeState",func_Callback);           //把Callback()方法注册到JS的方法

                                                                                                                                                         changeState中,js就可以调用as
                                            p.enabled=false;
                                            ExternalInterface.call("getURL","C:/temp/cn4001.wav");                   // 调用JS的getURL()方法并把路径传过去
                                            ExternalInterface.call("play");                                                           //播放,调用JS的play方法
                                }
                              private function stops():void{
                                           ExternalInterface.call("stop");                                                            //停止,调用JS的stop方法

                              }
                              public function func_Callback():void{

                                          p.enabled = true;
                              }
                   ]]>
           </fx:Script>
          <s:Button id="p" label="播放" x="200" y="250" click="plays()"/>
          <s:Button label="停止" x="300" y="250" click="stops()"/>
</s:Application>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值