Фенёк
20.12.2011, 13:00
Всем привет, я вобщем-то тут по довольно избитому вопросу, по которому мне так и не удалось нагуглить какого-нибудь адекватного и внятного ответа, по сему иду в народ.
Так вот, ситуация такая. Есть главный класс Main
package {
import flash.display.MovieClip;
import flash.events.Event;
public class Main extends MovieClip {
var widthInBlocks :int = 5, //Ширина поля в блоках
heightInBlocks :int = 5, //Высота поля в блоках
groundSample :Ground = new Ground(), //Для снятия параметров
scape :Scape, //Объект который я буду перетаскивать
bar :Bar;
static public var scapeCenter :Object = new Object(),//Объект, относительно которого будет строиться поле
center :Object = new Object();
public function Main()
{
//Чтобы блоки были по центру экрана
scapeCenter.x = stage.stageWidth / 2 - groundSample.width/2;
scapeCenter.y = stage.stageHeight / 2 - groundSample.height * heightInBlocks/2;
center.x = stage.stageWidth / 2;
center.y = stage.stageHeight / 2;
bar = new Bar();
bar.x = center.x - bar.width/2;
bar.y = center.y;
addChild(bar);
bar.addEventListener("loaded", onLoadComplte);
}
public function onLoadComplte(e:Event):void
{
bar.removeEventListener("loaded", onLoadComplte);
removeChild(bar);
scape = new Scape(widthInBlocks, heightInBlocks);
addChild(scape);
}
}
}
Он добавляет прелоадер на таймлайн и ждет пока тот закончит загрузку, чтобы потому вгрузить следующий объект.
Вот код используемый Bar'ом загрузки:
package {
import flash.display.MovieClip;
import flash.events.*;
public class Bar extends MovieClip {
public function Bar() {
addEventListener(Event.ADDED_TO_STAGE, added);
}
private function added(e:Event):void
{
addEventListener(Event.ENTER_FRAME, enterFrame)
}
private function enterFrame(e:Event):void
{
var total :Number = loaderInfo.bytesTotal,
loaded :Number = loaderInfo.bytesLoaded;
scaleX = loaded/total;
if(loaded == total)
{
removeEventListener(Event.ENTER_FRAME, enterFrame);
dispatchEvent(new Event('loaded'));
}
}
}
}
Что же я имею на выходе? НИ-ЧЕ-ГО.
Прелодерный бар не появляется сразу, а ждет полной загрузки флешки, после чего соизваливает на мгновение появиться сам на отметке 99. Со всех ожидаемых объектов снял галочки экспорта в первый кадр, но, увы, все тщетно.
Подскажите пожалуйста, как сделать прелоадер. Желательно без выпотрашивания содержимого библиотеки на таймлайн.
Так вот, ситуация такая. Есть главный класс Main
package {
import flash.display.MovieClip;
import flash.events.Event;
public class Main extends MovieClip {
var widthInBlocks :int = 5, //Ширина поля в блоках
heightInBlocks :int = 5, //Высота поля в блоках
groundSample :Ground = new Ground(), //Для снятия параметров
scape :Scape, //Объект который я буду перетаскивать
bar :Bar;
static public var scapeCenter :Object = new Object(),//Объект, относительно которого будет строиться поле
center :Object = new Object();
public function Main()
{
//Чтобы блоки были по центру экрана
scapeCenter.x = stage.stageWidth / 2 - groundSample.width/2;
scapeCenter.y = stage.stageHeight / 2 - groundSample.height * heightInBlocks/2;
center.x = stage.stageWidth / 2;
center.y = stage.stageHeight / 2;
bar = new Bar();
bar.x = center.x - bar.width/2;
bar.y = center.y;
addChild(bar);
bar.addEventListener("loaded", onLoadComplte);
}
public function onLoadComplte(e:Event):void
{
bar.removeEventListener("loaded", onLoadComplte);
removeChild(bar);
scape = new Scape(widthInBlocks, heightInBlocks);
addChild(scape);
}
}
}
Он добавляет прелоадер на таймлайн и ждет пока тот закончит загрузку, чтобы потому вгрузить следующий объект.
Вот код используемый Bar'ом загрузки:
package {
import flash.display.MovieClip;
import flash.events.*;
public class Bar extends MovieClip {
public function Bar() {
addEventListener(Event.ADDED_TO_STAGE, added);
}
private function added(e:Event):void
{
addEventListener(Event.ENTER_FRAME, enterFrame)
}
private function enterFrame(e:Event):void
{
var total :Number = loaderInfo.bytesTotal,
loaded :Number = loaderInfo.bytesLoaded;
scaleX = loaded/total;
if(loaded == total)
{
removeEventListener(Event.ENTER_FRAME, enterFrame);
dispatchEvent(new Event('loaded'));
}
}
}
}
Что же я имею на выходе? НИ-ЧЕ-ГО.
Прелодерный бар не появляется сразу, а ждет полной загрузки флешки, после чего соизваливает на мгновение появиться сам на отметке 99. Со всех ожидаемых объектов снял галочки экспорта в первый кадр, но, увы, все тщетно.
Подскажите пожалуйста, как сделать прелоадер. Желательно без выпотрашивания содержимого библиотеки на таймлайн.