|
|
|||||
Регистрация: Nov 2013
Сообщений: 14
|
Внешний или внутренний прелоадер
Вобщем, такой вопрос. А стоит ли вообще заморачиваться с встроенным прелоадером? Может вполне достаточно сделать 2 свф файла и грузить 1 с 2? Кто выставлял игры на продажу, какие требования там именно к прелоадерам?
|
|
|||||
Lorem ipsum
|
1. Как правило хотят один файл, а значит придется использовать таки внутренний прелоадер.
2. А какие такие "заморочки" с внутренним прелоадером имеются в виду?!
__________________
Поймай яблоко 2! |
|
|||||
Регистрация: Nov 2013
Сообщений: 14
|
Которую неделю мучаюсь сделать внутренний прелоадер в таком проекте (Проект Flash Builder 4.7 на основе fla). Делая все как в статьях с аргументами -frame "start" Main, в итоге при компиляции в флеше и имитации загрузки (CS6) всеравно прелоадер начинает работать только когда весь контент загрузится. Статьи все описаны для прелоадера скомпилированого чисто в ФБ (то-есть используя проект ActionScript Project), но у меня ж fla привязано еще, и я не выношу несколько десятков мувиков в swc, ибо нада так каждому мувику класс прописывать, а в проекте с фла без этого обойтись можна и кода меньше. Вобщем что делаю не так? Можна реально сделать встроенный прелоадер в проекте на основе fla, или все-же придется fla использовать чисто для графики с последствующим импортом в библиотеку swc и компилить уже чисто в билдере без IDE? Очень прошу помощи, ибо крыша начинает ехать уже
Добавлено через 8 минут Смотрел пример с иностранного сайта проекта сделаного чисто в Билдере 4.7 (ActionScript Project), но с привязкой swc графики с классами. Так вот там все работает c аргументом -frame "start" Main. Попробовал все это прикрутить в свой проект и вот что получилось: 1. Структура такая - Main.as, Preloader.as, Main.fla. Код Main.as: package { import flash.display.MovieClip; import flash.display.Sprite; import flash.system.fscommand; import Data.CLASSES.LEVELS.LEVEL_1_2; import Data.CLASSES.MAIN_MENUS.Main_Menu1; import flash.events.Event; public class Main extends MovieClip { public var main_menu:Main_Menu1; public var level1:LEVEL_1_2; //====================КОНСТРУКТОР===================================================== public function Main(){ if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } //--------------------ИНИЦИАЛИЗАЦИЯ МЕНЮ-------------------------------------------------------- public function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); main_menu = new Main_Menu1(this) addChild(main_menu); } //---------------Новая игра---------------------------- public function new_game() { level1 = new LEVEL_1_2(stage,this); main_menu=remove_movie_clip(main_menu); addChild(level1); } //--------------Загрузить игру------------------------------- public function load_game() { } //--------------Закрыть игру------------------------------- public function exit_game() { parent.removeChild(this); fscommand ("quit"); } //---------------------------Удаление мувиков с главной сцены-------------------------------------- private function remove_movie_clip(clip:*) { if (clip) { removeChild(clip); } return null; } } } Preloader.as: package { // imports import flash.display.MovieClip; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash.events.ProgressEvent; import flash.utils.getDefinitionByName; import mx.logging.Log; import mx.logging.targets.TraceTarget; public class Preloader extends MovieClip { /** * Constructor */ public function Preloader() { trace("Старт прелоадера"); // stage stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; Pr=new MyPreloader(); addChild(Pr); if (loaderInfo.bytesLoaded >= loaderInfo.bytesTotal) { // swf is already loaded preloaderCompleteHandler(null); } else { // preloader methods loaderInfo.addEventListener(Event.COMPLETE, preloaderCompleteHandler); loaderInfo.addEventListener(ProgressEvent.PROGRESS, preloaderProgressHandler); } } /** * Preloader progress */ private function preloaderProgressHandler(event:ProgressEvent):void { trace("Preloader progress: " + Math.round((event.bytesLoaded / event.bytesTotal) * 100) + "%"); } /** * Preloader complete */ private function preloaderCompleteHandler(event:Event):void { trace("Прелоадер готов"); // go to second frame gotoAndStop("start"); // application classname var applicationClass:* = getDefinitionByName("Main"); // make the application var application:* = new applicationClass(); addChild(application); } } } Дальше в настройках проекта прописал как в статье в АС3 компиле: Цитата:
|
|
|||||
Если мне не изменяет память, по поводу проекта во fla и в нем же прелоадера, все объекты в библиотеке нужно делать НЕ export in first frame, кроме прелоадера. Что-то такое было, давным давно, покопайте в эту сторону, возможно что-то нароете.
|
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Сделать два фрейма, в первом фрейме stop() (или в конструкторе прелоадера), всем классам в ИДЕ поставить галку export to frame 2.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
Регистрация: Nov 2013
Сообщений: 14
|
...и тут начались танци з бубном из-за привязаного Main.fla
В чистом примере на билдере основным классом проекта есть Main.as. Я же когда выставляю в билдере мейн основным и прописываю в СS6 его основным, то прелоадера вообще не видит (логично). Меняю у себя основным Preloader.as (Как в билдере так и в CS6), тогда прелоадер видит (трейсы выводит), но не видит метку кадра "start" Добавлено через 2 минуты Ставлю уже вручную в фла 2 кадра и 2 называю "start", так прелоадер грузится вместе с мейном и теряет свой смысл. Вобщем засада, нигде примера нету прелоадера кодом с привязкой fla Добавлено через 3 минуты Вобщем что нада лишнее вікинуть и что сделать чтоб компилилось с прелоадером нормально? И еще, компил где делать в таком проекте нада? Самим билдером или в IDE? |
|
|||||
Lorem ipsum
|
Для начала давай забудем о проблеме с прелоадером — ты в чем вообще изначально проект делал, во Flash IDE или в нормальной IDE в связке с SDK?
__________________
Поймай яблоко 2! |
|
|||||
Регистрация: Nov 2013
Сообщений: 14
|
Цитата:
Добавлено через 1 минуту Правил себе код в билдере, ктрл+ентер - компил при такой комбинации делался сразу в IDE. Все было норм. Добавлено через 2 минуты Теперь давайте пошагово раскажу как крутить Preloader.as начал и скажете где не так. Добавлено через 3 минуты 1. Коды 2 классов в начале темы повторюсь. Вобщем сделал теперь основным классом Прелоадер как в ФБ так и в фла. 2.Прописал аргумент в ФБ: -frame "start" Main Добавлено через 5 минут 3.Кадров нету в фла, все на классе Прелоадер завязано для справки. Нажимаю компил ктрл+ентер в билдере - в иде ошибка : Цитата:
На этом этапе и начал методом тыка непонятно что делать и завис на неделю |
|
|||||
Lorem ipsum
|
Не подскажу, я таким образом компилировал первые пару дней знакомства с FlashDevelop, после чего мне это окончательно надоело — подключил SDK и начал работать как положено.
__________________
Поймай яблоко 2! |
|
|||||
Регистрация: Nov 2013
Сообщений: 14
|
Поподробнее можна. В чем графику делаете? Все компилите в swc, потом в чем програмируете и компилите исходный swf?
|
Часовой пояс GMT +4, время: 23:42. |
|
« Предыдущая тема | Следующая тема » |
|
|