Загрузка SWF-файла в проект ActionScript 3 (Flex Builder) - PullRequest
0 голосов
/ 17 июня 2009

Мы разрабатываем небольшой Flash-гейлет для нашего европейского клиента, которому необходимо, чтобы мы разрабатывали нашу Flash-игру таким образом, чтобы они могли загружать нашу SWF-игру в свой проект ActionScript 3, динамически.

В основном у них есть консоль, которая будет загружать многие другие Flash-игры, в том числе и наши, в зависимости от того, какую кнопку игрок нажимает на экране «Выберите игру».

По сути, у нас есть проект FLA, который мы создаем во Flash Professional CS4, и все это в основном простая Flash-игра. Когда мы тестируем игру с помощью Ctrl + Enter или запускаем скомпилированный SWF-файл, дважды щелкнув по нему, все работает хорошо, игра работает отлично, и все являются счастливыми кроликами.

Что нам нужно понять, так это загрузить наш SWF в наш клиентский проект AS3, который по сути является внешним проектом ActionScript 3, созданным в Flex Builder 3. Клиент отправил нам следующий код для загрузки SWF:

var myGame:FunkyChickenGame = new FunkyChickenGame();
addChild(myGame);

... который выполняется в конструкторе приложения ActionScript 3 клиентского приложения или, возможно, в обработчике события для кнопки, нажатой на экране «Выберите игру».

Мы попытались создать пустой проект AS3 во Flex Builder и попытались загрузить SWF, как показано в моем фрагменте выше. Все наши трассировки в классе документов внешнего SWF-файла отображаются, как и ожидалось, в представлении консоли Flex Builder, поэтому код работает отлично.

Проблема, с которой мы сталкиваемся, заключается в том, что, несмотря на вызов addChild (myGame) ... мы не видим никакой графики, только цвет фона по умолчанию для инкапсулирующего проекта AS3.

Обратите внимание, однако, что когда мы запускаем SWF, дважды щелкнув файл Game.swf в Windows, все работает отлично, игра работает без ошибок и сбоев.

Любая помощь по этой теме будет принята с благодарностью. Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 18 июня 2009

Вам необходимо использовать экземпляр класса Loader, например:

var loader:Loader = new Loader();

// you'll need to write a method named onLoaded to capture the COMPLETE event
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded);

loader.load(new URLRequest("game.swf"));
addChild(loader);
0 голосов
/ 12 октября 2009

Создание экземпляра класса - это как можно больше заработной платы. У вашего клиента есть забавный способ размещения ссылок.

Однако FunkyChickenGame может быть классом, созданным клиентом, который может запустить вашу игру. Возможно, игры встроены в их флеш-приложение, но это будет означать долгое время загрузки. Если на самом деле многие игры «загружаются» таким образом.

Я бы посоветовал вам не использовать stage, root или другие свойства, которые могли бы связать основное приложение, а не вашу игру, и оставить клиенту решать, как он хочет его загрузить.

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