一、新建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>