Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.11.2013, 11:04
Nucer вне форума Посмотреть профиль Отправить личное сообщение для Nucer Посетить домашнюю страницу Nucer Найти все сообщения от Nucer
  № 1  
Ответить с цитированием
Nucer
[++]
 
Аватар для Nucer

Регистрация: Jan 2003
Адрес: Москва
Сообщений: 839
Отправить сообщение для Nucer с помощью ICQ
Flame Flash Builder, swc-библиотеки и... прелоадер одним файлом

Всем привет! Впервые возникла необходимость сделать прелоадер одним файлом на AS3 - ибо нерадивые игровые порталы принимают игрушку одной swf-кой...((
Ситуация такая:
Есть несколько fla-шек с кучей графики и экспортируемых классов, которые эту графику и используют. Как обычно - компилю их в swc, а swc-библиотеки подцепляются в проект во Flash Builder'е. Многие классы, написанные в билдере расширяют классы из swc. Например:
Код AS3:
class MyButton extends MyButtonGraphicFromSwc
Внешний прелоадер, естественно, работает на ура.
Поковырялся чуток, убрал всем ресурсам галочку "Export in frame 1" - теперь билдер ругается кучей ошибок типа того:
Код:
1017: The definition of base class **** was not found
1046: Type was not found or was not a compile-time constant: ****.
1180: Call to a possibly undefined method ****.
в тех местах, где были использованы классы из swc...

Подскажите по существу плиз)) Все найденные мной мануалы по "созданию прелоадера одним файлом" начинаются исключительно с танцев с бубном во FlashIDE и манипуляциях с кадрами...
Реально ли сделать этот прелоадер в билдере??
Можно ли сделать какой то костыль в виде fla-шки, которая будет реализовывать всю эту историю с кадрами и при этом будет инстанциировать класс игры, созданный в билдере?))
Спасибо, если кто подскажет решение )

Старый 26.11.2013, 11:36
alexandrratush вне форума Посмотреть профиль Отправить личное сообщение для alexandrratush Найти все сообщения от alexandrratush
  № 2  
Ответить с цитированием
alexandrratush
 
Аватар для alexandrratush

Регистрация: Jul 2013
Адрес: Днепр
Сообщений: 529
Отправить сообщение для alexandrratush с помощью ICQ Отправить сообщение для alexandrratush с помощью Skype™
А так пробовали делать?

Document Class
Код AS3:
package {
 
  import flash.display.Sprite;
 
  [Frame(factoryClass='Preloader')] //Название класса прелоадера
 
  public class Main extends Sprite {
 
     public function Main() {
        //init
     }
  }
}
Preloader Class:
Код AS3:
package {
 
   import flash.display.DisplayObject;
   import flash.display.MovieClip;
   import flash.events.ProgressEvent;
   import flash.utils.getDefinitionByName;
 
  public class Preloader extends MovieClip {
 
     public function Preloader()
     {
        //графика
 
        this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress);
     }
 
     private function onProgress(e:ProgressEvent):void 
     {
        var percent:Number = Math.round(e.bytesLoaded / e.bytesTotal * 100);
        if (percent == 100)
        {
          this.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, onProgress);
          onLoaded();
        }
     }
     private function onLoaded():void
     {
       nextFrame(); //на следующий кадр
       var App:Class = getDefinitionByName("Main") as Class; //Название Document Class
       addChild(new App() as DisplayObject);
     }
  }
}

Старый 28.11.2013, 10:19
Nucer вне форума Посмотреть профиль Отправить личное сообщение для Nucer Посетить домашнюю страницу Nucer Найти все сообщения от Nucer
  № 3  
Ответить с цитированием
Nucer
[++]
 
Аватар для Nucer

Регистрация: Jan 2003
Адрес: Москва
Сообщений: 839
Отправить сообщение для Nucer с помощью ICQ
Не помогает(Всё та же ошибка с классами, расширяющими базовые классы, которые лежат в swc-либах((
1017: The definition of base class *** was not found.
где *** - базовый класс из swc (мувиклипы с определённой графикой внутри)

Добавлено через 32 часа 8 минут
Хм... Долго танцевал с бубном, во флэше поставил export classes in frame 2, а всем мувикам из библиотеки поставил галку Export in frame 2.
Теперь классы исправно подхватываются, но вот толку ноль - всё загружается также, как и загружалось)

Попробовал сделать с директивой [Frame, но теперь прямые ссылки на мой класс отсутствуют и, как следствие, он не включается в экспортируемыую флэшку и getDefinitionByName выдаёт соотв. ошибку, что класс не найден! Как заставить FlashBuilder 4.6 заинклудить класс, при этом сделать это "во 2й фрейм" - никак??

Сделал костыль во Flash CS6 - два кадра, на первый поставил добавление прелоадера на сцену, на 2й - создание класса игры. Работает исправно. Но загружается, собака, целиком на 100%, потом только отображается (согласно bandwith profiler'у - загружено 0 кадров до момента загрузки на 100%). Видимо для классов, экспортированных в swc не работает настройка export in frame n??

В общем ситуация тупиковая по всей видимости...

Старый 29.11.2013, 20:00
gadzhimari вне форума Посмотреть профиль Отправить личное сообщение для gadzhimari Найти все сообщения от gadzhimari
  № 4  
Ответить с цитированием
gadzhimari

Регистрация: Oct 2012
Сообщений: 14
Nucer, эта тема обсуждалась здесь. Действительно мета-тег Frame не работает. Как решение можно использовать ключ компилятора называемый frame.
Т.е. тебе нужно просто вписать в FB окно Project - Properties - ActionScript Compiler в поле Additional compiler arguments строчку -frame two Main, где Main имя класса, который будет создан после загрузки прелоадера. Подробно про ключ frame написано здесь и здесь. Класс Preloader и связанный с ним класс Main должны находится в корне проекта. Иначе выходит ошибка.

Старый 01.12.2013, 12:43
Nucer вне форума Посмотреть профиль Отправить личное сообщение для Nucer Посетить домашнюю страницу Nucer Найти все сообщения от Nucer
  № 5  
Ответить с цитированием
Nucer
[++]
 
Аватар для Nucer

Регистрация: Jan 2003
Адрес: Москва
Сообщений: 839
Отправить сообщение для Nucer с помощью ICQ
Получилось!!! Спасибо огромное ))

Создать новую тему Ответ Часовой пояс GMT +4, время: 06:27.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 06:27.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.