PDA

Просмотр полной версии : Проблема с Preloader'ом


ty31k
15.02.2014, 21:47
Появилась проблема( конечно на этом форуме мне толком никто не помог, но может в этот раз поможете ).
Суть проблемы такова: у меня есть прелоадер, когда он загружает игру он должен получить класс игры методом getDefinitionByName. Но как только он пытается вытащить класс пишет что переменная не определена...Пытался поискать ответ но толком ничего не нашел...

КорДум
15.02.2014, 21:54
Где-то в коде ошибка. Код в студию.
Переназовите тему более подходяще, а то ее закроют.

ty31k
16.02.2014, 00:24
package
{
import flash.display.DisplayObject;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.ProgressEvent;
import flash.utils.getDefinitionByName;

public class Preloader extends MovieClip
{
private var mainClass:Class;
public function Preloader()
{
if (this.stage == null) {
this.addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
} else {
start();
}
}
private function addedToStageHandler(event:Event):void
{
this.removeEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
start();
}

private function start():void
{
if (this.loaderInfo.bytesLoaded == this.loaderInfo.bytesTotal) {
complete();
} else {
this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler);
this.loaderInfo.addEventListener(Event.COMPLETE, completeHandler);
}
}

private function progressHandler(event:ProgressEvent):void
{
var total:Number = event.bytesTotal;
var percent:Number = total > 0 ? event.bytesLoaded/event.bytesTotal : 0;
trace('Загружено '+Math.floor(percent*100)+'%');
}

private function completeHandler(event:Event):void
{
this.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progressHandler);
this.loaderInfo.removeEventListener(Event.COMPLETE, completeHandler);
complete();
}

private function complete():void
{
this.nextFrame();
mainClass = getDefinitionByName("CortasisGame") as Class;
var main:DisplayObject = new mainClass();
this.parent.addChildAt(main, 0);
this.parent.removeChild(this);
}
}
}

silin
16.02.2014, 12:24
попробуйте добавить в опции компилятора -frame frameLabel CortasisGame
(в FD это можно через Project Properties > Compiler Options > Additional Compiler Options)

caseyryan
16.02.2014, 15:15
Зачем это вообще нужно? Задача прелодера скачать, и добавить как DisplayObject. Зачем ему знать какой там главный класс и какие у него есть свойства?

silin
16.02.2014, 15:16
это прелоадер в первом кадре самой флешки

ty31k
16.02.2014, 16:56
Нашел проблему, а точнее помогли)))если кому интересно то у меня просто в главном классе были 2 переменные, которые не должны были инициализироваться. var w:Number = stage.width;
var h:Number = stage.height;

Добавлено через 3 минуты
Тему можно закрывать)