Я использую пакет для воспроизведения файлов .wav во Flash. Я могу воспроизвести wav, однако я не могу запустить их с помощью кнопки. Я подозреваю, что это потому, что я неправильно понял это ключевое слово. Ниже приведен пример.
Вы можете видеть, что когда я вызываю playBackTest () напрямую, это работает; когда я вызываю этот объект с кнопки, это не так.
Любые предложения будут очень признательны.
package
{
import flash.display.Sprite;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.Event;
import flash.utils.ByteArray;
import org.as3wavsound.WavSound;
import org.as3wavsound.WavSoundChannel;
import org.as3wavsound.WavSoundPlayer;
import flash.display.*;
import flash.text.TextField;
import flash.events.ProgressEvent;
public final class PlaySound extends MovieClip
{
var tts:WavSound;
var soundUrl:String;
var soundType:String;
var statusTextField:TextField = new TextField();
var WavChannel:WavSoundChannel;
var statusMC:MovieClip;
var totalRemainingLoad:int = 0;
public function PlaySound(soundUrl:String, repeats:String, volumeLevel:Number, statusMC):void {
//set variables of this object when it's initiated
this.soundUrl = soundUrl;
this.statusMC = statusMC;
loadWav();
}
public function loadWav() {
var urlRequest:URLRequest = new URLRequest(soundUrl);
var wav:URLLoader = new URLLoader();
wav.dataFormat = 'binary';
wav.load(urlRequest);
wav.addEventListener(ProgressEvent.PROGRESS, progressHandler);
this.statusMC.addChild(statusTextField);
wav.addEventListener(Event.COMPLETE, makeWav);
}
private function progressHandler(event:ProgressEvent):void {
var loadTime:Number = event.bytesLoaded / event.bytesTotal;
var LoadPercent:uint = Math.round(100 * loadTime);
statusTextField.text = LoadPercent + ' % loaded ';
}
public function makeWav(e:Event) {
this.tts = new WavSound(e.target.data as ByteArray);
playBackTest();
}
public function playBackTest() {
trace('This makes audio play');
this.tts.play();
}
public function playBack() {
trace('This does not if called from outside with a button press');
this.tts.play();
}
}
}