Actionscript 3 - 从另一个函数内部调用onLoadProgress函数

时间:2011-09-23 20:33:30

标签: flash actionscript-3 actionscript

我有一个加载和音频文件的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.

2 个答案:

答案 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)

我在函数中添加了事件监听器,现在一切都是正确的。