我有一个加载和音频文件的AS3功能,然后播放它。我有第一个音频文件的预加载器 - 现在我需要在第二个音频文件启动之前运行预加载功能。
myMusic.addEventListener(ProgressEvent.PROGRESS, onLoadProgress2, false,0, true);
myMusic.addEventListener(Event.COMPLETE, playMusicNow, false, 0,true);
myMusic.load(soundFile, myContext); //This code works
这是播放代码:
//此代码不起作用
function receiveText1(value:String):void {
channel.stop();
channel2.stop();
songPosition = 0;
soundFile2 = new URLRequest(jsVariableValue1);
myMusic2= new Sound(); //Intstantation
myMusic2.load(soundFile2, myContext);
//need to run preloader here
soundFile2exist = null;
}
这是我的事件监听器和预加载器:
myMusic2.addEventListener(ProgressEvent.PROGRESS, onLoadProgress, false,0, true);
myMusic2.addEventListener(Event.COMPLETE, playMusicNow, false, 0,true);
function onLoadProgress(evt:ProgressEvent):void {
progBar.alpha = .70;
prcLoaded.alpha = .70;
var pcent:Number=evt.bytesLoaded/evt.bytesTotal*100;
prcLoaded.text =int(pcent)+"%";
progBar.width = 90 * (evt.bytesLoaded / evt.bytesTotal);
}
我以为我可以致电
onLoadProgress(evt:ProgressEvent);
来自函数内部,但我收到错误
1084: Syntax error: expecting rightparen before colon.
答案 0 :(得分:0)
为什么要手动调用“onLoadProgress”?
它应该自动执行(如果你的文件没有被缓存,你正在正确添加监听器)
我在你的问题中看到了你的addEventListener,但你没有显示你在何时/何时添加这个监听器。
无论如何,如果你想执行onLoadProgress,你应该这样做:
var bytesLoaded:uint = 50;
var bytesTotal:uint = 100;
var evt:ProgressEvent = new ProgressEvent( ProgressEvent.PROGRESS, false, false, bytesLoaded, bytesTotal);
onLoadProgress(evt);
您必须注意,您需要创建一个“假”Progress事件,并指定fakes bytesLoaded和bytesTotal值。
甚至知道onLoadProgress只执行一次。
我确信这不是你想要的。
请更好地解释你想做什么。
答案 1 :(得分:0)
我在函数中添加了事件监听器,现在一切都是正确的。