Можно ли управлять SWF через Javascript? - PullRequest
4 голосов
/ 11 января 2011

Вот ситуация:

Клиент хочет, чтобы зацикленный SWF-файл приостанавливался на две секунды, прежде чем он начинает воспроизводиться снова (это хорошая анимация сборки на логотипе, но логотип не остается нана экране очень долго, потому что фильм повторяется, так что пользователи не могут видеть логотип долго. Это не имеет значения, но это хорошая история.)

Они предоставили мне SWF-файл, но не FLA.Когда я спросил о FLA, мне сказали, что жесткий диск, содержащий FLA, вышел из строя, и его невозможно восстановить.Итак, это в значительной степени тупик.

Прежде чем я попытаюсь декомпилировать SWF и все эти забавные вещи, я хотел бы знать, есть ли способ сделать это с HTMLи Javascript.То есть:

  1. Имеет цикл SWF
  2. Приостановите фильм на две секунды, прежде чем он возобновится

Как вы думаете?

Ответы [ 3 ]

5 голосов
/ 11 января 2011

С javascript это сделать нелегко, но очень просто, если вы загрузите swf в другой swf. После этого у вас будет доступ к основной временной шкале исходного SWF, и вы сможете его контролировать. Если вы хотите контролировать фильм под названием targetMovie.swf, вы можете сделать что-то вроде этого:

var loader:Loader = new Loader();
loader.load(new URLRequest("targetMovie.swf"));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
addChild(loader);

var logoMovie:MovieClip;
function onComplete(evt:Event):void{
    logoMovie = MovieClip(loader.content);
    // call pauseMovie at end of timeline
    logoMovie.addFrameScript(logoMovie.totalFrames-1, pauseMovie);
}
function pauseMovie():void{
    logoMovie.stop();
    // delay for two seconds;
    setTimeout(function(){
      logoMovie.play();   
        }, 2000);
}
2 голосов
/ 11 января 2011

Вы можете смоделировать это полностью в javascript с помощью swfObject.Вам нужно определить время анимации, добавить две секунды и установить время до перезапуска сценария.Вот рабочий пример с введением homestarrunner:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
        <script type="text/javascript" src="http://swfobject.googlecode.com/svn-history/r409/trunk/swfobject/swfobject.js"></script>

        <script type="text/javascript">
            $(document).ready(function(){
              startSwf()
            })

            var restartTime = 24500 //in milliseconds
            function stopSwf(){
              swfobject.removeSWF("swfLoop");
              startSwf();
            }

            function startSwf() {
              $("body").append("<div id='swfLoop'></div>");
              swfobject.createSWF({data:"http://homestarrunner.com/newintro.swf", width:400, height:300}, null, "swfLoop");
              setTimeout('stopSwf()', restartTime);
            }
        </script>
    </head>
    <body></body>
</html>

подключите сюда: http://htmledit.squarefree.com/

1 голос
/ 23 февраля 2011
...