AS3 - удалить внешний интерфейс обратного вызова во время загрузки? - PullRequest
0 голосов
/ 12 октября 2011

У меня есть серия из 10 обратных вызовов внешнего интерфейса, которые вызываются через javascript и загружают mp3-файлы.Проблема в том, что кто-то может щелкнуть по ним, пока работает функция предварительной загрузки, и это приводит к загрузке нескольких файлов.Есть ли способ отключить обратные вызовы во время работы функции предварительной загрузки?

 ExternalInterface.addCallback("receiveText1", receiveText1);

function receiveText1(value:String):void {


        channel.stop();
        channel2.stop();
        lblSongTime.alpha = 0;
        lblSongTotalTime.alpha = 0;
        songPosition = 0;
        soundFile2 = new URLRequest(jsVariableValue1);
        myMusic2= new Sound();  //Intstantation
        myMusic2.addEventListener(ProgressEvent.PROGRESS, onLoadProgress2, false,0, true);
        myMusic2.addEventListener(Event.COMPLETE, playMusicNow, false, 0,true);
        myMusic2.load(soundFile2, myContext);
        soundFile2exist = null;
        trace("text1");
        }

функция загрузки

function onLoadProgress2(evt:ProgressEvent):void {
    channel.stop();
    channel2.stop();
    songPosition = 0;
    btnPlay.mouseEnabled = false;
    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);
}

1 Ответ

1 голос
/ 12 октября 2011

Просто сохраняйте переменную во Flex и игнорируйте несколько вызовов.

Пример:

private var currentlyLoading:String = "";

function receiveText1(value:String):void {
    if ( currentlyLoading == value ) { return; /*ignore*/ }

    currentlyLoading = value;

    channel.stop();
    channel2.stop();
    lblSongTime.alpha = 0;
    lblSongTotalTime.alpha = 0;
    songPosition = 0;
    soundFile2 = new URLRequest(jsVariableValue1);
    myMusic2= new Sound();  //Intstantation
    myMusic2.addEventListener(ProgressEvent.PROGRESS, onLoadProgress2, false,0, true);
    myMusic2.addEventListener(Event.COMPLETE, playMusicNow, false, 0,true);
    myMusic2.load(soundFile2, myContext);
    soundFile2exist = null;
    trace("text1");
    }

function playMusicNow(e:Event):void {
    currentlyLoading = "";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...