У меня была проблема с функцией оповещения JavaScript - PullRequest
0 голосов
/ 18 августа 2011

У меня 3 вида SWF-игроков, и если кто-то из игроков играет, все остальные должны сделать паузу.

1-й - audioPlayer - autoplay = true; 2-й - audioPlayer - autoplay = false; 3-й - аудио-проигрыватель - autoplay = false;

Если 2-й и 3-й паузы или закончены, то 1-й должен продолжаться, если он не был приостановлен.

Это мой код Java * .

function videoPlaying(val){
    tmp = val;
}    
function sendTojs(value){
        if(value == "end" || value == "pause"){
         thisMovie("movie0").sndToAS("pause");
         alert("done");
    }
    for(i=0; i<=7; i++){
         var mov="movie"+i;
        if(tmp!=mov){
                thisMovie(mov).sndToAS("resume");
            }
         }
        }

здесь sndToAS - это моя actionscript функция, а tmp будет иметь строки "resume", "pause" и "end". Я использовал externalInterface.callBack в AS3.

ActionScript3.0

в пределах callback функции

if(val == "pause")
{
    videoPlay();
}

Моя проблема: если я использую функцию alert в sendTojs, то условие работает, иначе нет. Почему?

Ответы [ 3 ]

4 голосов
/ 18 августа 2011

Если добавление предупреждения устраняет проблему, значит, это проблема синхронизации. Предупреждение останавливает выполнение до тех пор, пока вы не отклоните его, радикально изменив время кода. Возможно, есть асинхронная операция, которую нужно выполнить?

1 голос
/ 18 августа 2011

Возможно, у вас есть ситуация, когда отображение не обновляется, пока скрипт не остановится (в данном случае для предупреждения).Попробуйте использовать setTimeout().

if(tmp2=="end")
 {
    thisMovie("movie0").sndToAS("pause"),
    setTimeout(function() {},1);
 } 
0 голосов
/ 19 августа 2011

ты сказал

Я использовал externalInterface.call в AS3

это не externalInterface.call это ExternalInterface.addCallback

ExternalInterface.addCallback( "sndToAS", myJsCallBack );
function myJsCallBack ( val:String ):void{
  switch( val ){ // do your validation in ActionScript
    case "pause":
      // do pause toggle here
      break;
    case "end":
      // do stop here
      break;
    case "start":
      // do start here
      break;
  }
}

В javaScript вам нужно это

thisMovie("movie0").sndToAS(tmp);
...