Которую неделю мучаюсь сделать внутренний прелоадер в таком проекте (Проект 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:
Код AS1/AS2:
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:
Код AS1/AS2:
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);
}
}
}
Добавлено через 9 минут
Дальше в настройках проекта прописал как в статье в АС3 компиле: