Actionscript 3 - вызов функции onLoadProgress из другой функции - PullRequest
0 голосов
/ 24 сентября 2011

У меня есть функция 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 голосов
/ 24 сентября 2011

Я добавил слушателей событий в функцию, и все прямо сейчас.

0 голосов
/ 24 сентября 2011

почему вы хотите вручную вызвать "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 и назначить подделкиЗначения bytesLoaded и bytesTotal.
И даже зная, что onLoadProgress будет выполнен только один раз.
И я уверен, что это не то, что вы хотите.

Пожалуйста, объясните лучше, что вы пытаетесь сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...