Spider10k
27.11.2009, 23:28
Здравствуйте.
Проблему опишу подробно, т.к. являюсь новичком в as и не очень понимаю, что важно в моей ситуации, а что нет....
Использую adobe flash cs4. Основной класс моего проекта - Main. В проекте имеется файл Main.fla, у которого основным классом указан Main (из этого fla я так понимаю экспортится swf). Возникла необходимость сделать прелоадер. По информации найденной здесь использовал [Frame]:
Основной класс:
[Frame (factoryClass="Preloader")]
public class Main extends Sprite
{
.....
}
Класс прелоадера:
public class Preloader extends MovieClip
{
public function Preloader()
{
stop();
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
public function onEnterFrame(event:Event):void
{
graphics.clear();
if(framesLoaded == totalFrames)
{
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
nextFrame();
init();
}
else
{
var percent:Number = root.loaderInfo.bytesLoaded / root.loaderInfo.bytesTotal;
graphics.beginFill(0);
graphics.drawRect(0, stage.stageHeight / 2 - 10,
stage.stageWidth * percent, 20);
graphics.endFill();
}
}
private function init():void
{
var mainClass:Class = Class(getDefinitionByName("Main"));
if(mainClass)
{
var app:Object = new mainClass();
addChild(app as DisplayObject);
}
}
}
Вобщем, результата никакого нет, класс прелоадера вообще не создается (вариант, что я не замечаю прелоадер просто из-за быстрой загрузки отпадает, ибо trace в конструкторе прелоадера ставил, который не вызывался). Попробовал поставить fla файлу основной класс Preloader - тогда выдается такая ошибка:
ReferenceError: Error #1065: Переменная Main не определена.
at global/flash.utils::getDefinitionByName()
at Preloader/init()
at Preloader/onEnterFrame()
Вобщем, подскажите пожалуйста где я натупил. Поотому что меня не оставляет уверенность, что я в корне что-то не так сделал.
Проблему опишу подробно, т.к. являюсь новичком в as и не очень понимаю, что важно в моей ситуации, а что нет....
Использую adobe flash cs4. Основной класс моего проекта - Main. В проекте имеется файл Main.fla, у которого основным классом указан Main (из этого fla я так понимаю экспортится swf). Возникла необходимость сделать прелоадер. По информации найденной здесь использовал [Frame]:
Основной класс:
[Frame (factoryClass="Preloader")]
public class Main extends Sprite
{
.....
}
Класс прелоадера:
public class Preloader extends MovieClip
{
public function Preloader()
{
stop();
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
public function onEnterFrame(event:Event):void
{
graphics.clear();
if(framesLoaded == totalFrames)
{
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
nextFrame();
init();
}
else
{
var percent:Number = root.loaderInfo.bytesLoaded / root.loaderInfo.bytesTotal;
graphics.beginFill(0);
graphics.drawRect(0, stage.stageHeight / 2 - 10,
stage.stageWidth * percent, 20);
graphics.endFill();
}
}
private function init():void
{
var mainClass:Class = Class(getDefinitionByName("Main"));
if(mainClass)
{
var app:Object = new mainClass();
addChild(app as DisplayObject);
}
}
}
Вобщем, результата никакого нет, класс прелоадера вообще не создается (вариант, что я не замечаю прелоадер просто из-за быстрой загрузки отпадает, ибо trace в конструкторе прелоадера ставил, который не вызывался). Попробовал поставить fla файлу основной класс Preloader - тогда выдается такая ошибка:
ReferenceError: Error #1065: Переменная Main не определена.
at global/flash.utils::getDefinitionByName()
at Preloader/init()
at Preloader/onEnterFrame()
Вобщем, подскажите пожалуйста где я натупил. Поотому что меня не оставляет уверенность, что я в корне что-то не так сделал.