Загрузить один SWF с прикрепленным .as в другой? - PullRequest
1 голос
/ 25 мая 2011

Я пытаюсь создать концептуальную схему загрузки одного SWF-файла в другой SWF-файл для создания скинов.Установка выглядит следующим образом:

  • app.fla, который имеет прикрепленный класс ActionScript, AppMain.as
  • skin.fla, который содержит компоненты пользовательского интерфейса

AppMain.as, очевидно, будет содержать всю логику приложения;Затем я хочу иметь возможность влиять на компоненты пользовательского интерфейса, содержащиеся в загруженном файле обложки, на основе имен экземпляров, определенных в этой конкретной обложке.

Например, если у меня есть TextField с именем экземпляра myTextField Я бы хотел иметь возможность программно установить свойство text этого текстового поля в AppMain.as.

Экспортированный app.swf для загрузки файла обложки на основе параметра flashvar будетбыть загруженным в документ HTML, который выглядел следующим образом:

<html>
    <head>
      <title>Test</title>
    </head>
    <body>
      <div id="swf"><!--//--></div>
      <script src="jquery.js"></script>
      <script src="swfobject.js"></script>
      <script>
          $(document).ready(function() {
              $('#swf').flash({
                  swf: 'app.swf',
                  width: 550,
                  height: 400,
                  flashvars: {
                      skin: 'skin.swf'
                  }
              });
          });
      </script>
    </body>
</html>

Это просто загружает app.swf в #swf <div>.Любая помощь о том, как вставить скин SWF в мое основное приложение SWF, была бы благодарна.В настоящее время у меня есть следующее (которое не работает).

package
{
    import flash.display.Loader;
    import flash.display.MovieClip;
    import flash.net.URLRequest;

    public class AppMain extends MovieClip
    {
        public function AppMain()
        {
            var myLoader:Loader = new Loader();
            self.addChild(myLoader);
            var myRequest:URLRequest = new URLRequest('skin.swf');
            myLoader.load(myRequest);
        }
    }   
}

Скин, который я пытаюсь загрузить, прост в том, что имеет красный фон, поэтому я могу видеть, был ли он загружен или нет;это не так, как моя HTML-страница, на которую я экспортирую, все еще имеет белый фон.

У меня есть ошибка выше?Консоль во Flash Professional CS5 не выдает никаких ошибок на вкладке «Ошибки компиляции».

1 Ответ

0 голосов
/ 25 мая 2011

Я попробовал ваш код с небольшими изменениями, и он работал нормально для меня. Прежде всего, проверьте эту строку:

    self.addChild(myLoader);

Если ваш код, который вы здесь написали, завершен, переменная self не объявляется (но в этом случае вы должны получить ошибку «Доступ к неопределенному свойству»). Если эта переменная объявлена, проверьте, добавлена ​​она в список отображения или нет. Ваша проблема может быть воспроизведена в том случае, если она не добавлена: вы не видите загруженный материал и не получаете никаких ошибок.

Если это по-прежнему не помогает, попробуйте добавить прослушиватели событий в ваш экземпляр Loader, чтобы увидеть, что происходит во время процесса загрузки.

    myLoader.contentLoaderInfo.addEventListener( Event.INIT, initHandler );
    myLoader.contentLoaderInfo.addEventListener( Event.OPEN, openHandler );
    myLoader.contentLoaderInfo.addEventListener( Event.UNLOAD , unLoadHandler );
    myLoader.contentLoaderInfo.addEventListener( Event.COMPLETE , completeHandler );
    myLoader.contentLoaderInfo.addEventListener( IOErrorEvent.IO_ERROR , ioErrorHandler );
    myLoader.contentLoaderInfo.addEventListener( ProgressEvent.PROGRESS , progressHandler );
    myLoader.contentLoaderInfo.addEventListener( HTTPStatusEvent.HTTP_STATUS , httpStatusHandler );
    myLoader.contentLoaderInfo.addEventListener( SecurityErrorEvent.SECURITY_ERROR , securityErrorHandler);

Если у вас есть другие вопросы, пожалуйста, задавайте.

Приветствия

Тамас Гронас

...