Я играю файлы m4a, которые требуют, чтобы я использовал объект NetStream и хочу управлять звуком с помощью объекта SoundChannel (поскольку это единственный способ, которым я знаю, синхронизировать элемент управления HSlider с аудиофайлом). Моя проблема в том, что я не могу подключить звуковой канал к источнику звука. Обработчик события button1_clickHandler даже не распознает существование объекта SoundChannel. Есть ли способ управлять этим типом аудиофайла с помощью SoundChannel? Если нет, как я могу установить положение HSlider - я пытался использовать HSlider.value, но это почему-то переопределяется.Как управлять файлом m4a
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" minWidth="955" minHeight="600" creationComplete="init()">
<mx:Script>
<![CDATA[
private var audioExample:AudioExample_M4A;
public function init():void{
audioExample = new AudioExample_M4A();
}
private function button1_clickHandler(event:MouseEvent):void{
if(audioExample.soundChannel){
audioExample.soundChannel.stop()
trace("Yes")
}else{
trace("No")
}
}
]]>
</mx:Script>
<mx:Button label="Play/Pause" click="button1_clickHandler(event)"/>
</mx:Application>
Вот файл класса AudioExample_M4A.as:
package {
import flash.display.Sprite;
import flash.events.*;
import flash.media.SoundChannel;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
public class AudioExample_M4A extends Sprite {
public var soundChannel:SoundChannel= new SoundChannel();;
public var temp:String = new String()
public var audioURL:String = "badge.m4a";
private var connection:NetConnection;
public var stream:NetStream;
public function AudioExample_M4A() {
connection = new NetConnection();
connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
connection.connect(null);
}
private function netStatusHandler(event:NetStatusEvent):void {
switch (event.info.code) {
case "NetConnection.Connect.Success":
connectStream();
break;
case "NetStream.Play.StreamNotFound":
break;
}
}
private function connectStream():void {
stream = new NetStream(connection);
stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
stream.client={onMetaData:function(obj:Object):void{
trace("metadata: duration=" + obj.duration);
}
}
soundChannel = stream.play(audioURL) as SoundChannel;
}
}}