|
|
|||||
Banned
Регистрация: Dec 2012
Сообщений: 20
|
Ошибка при подключении прелоадера
Здравствуйте ув.форумчане.
Написал простой прелоадер,пытаюсь вызвать его в конструкторе основного класса,выходит ошибка TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null". at src.preload::Preload() at Test() При этом я понял,что ошибка возникает на этапе передачи экземпляра в переменную. Но понять как исправить не знаю. Вот основной класс package { import flash.display.MovieClip; import src.TestObj; import src.preload.Preload; public class Test extends MovieClip { private var tO:TestObj = new TestObj(); private var loading:Preload = new Preload(); public function Test():void { addChild(loading); tO.sv1 = tO.sv1+3; trace(tO.sv1); trace(tO.sv2); addChild(tO); } } } package src.preload { import flash.display.MovieClip; import flash.events.Event; import flash.events.ProgressEvent; import flash.display.*; public class Preload extends MovieClip { public var wait:Wait = new Wait(); // надпись public var waitLoading:WaitLoading = new WaitLoading(); // полоска загрузки public function Preload():void { addChild(wait); addChild(waitLoading); loaderInfo.addEventListener(Event.COMPLETE,onComplite); loaderInfo.addEventListener(ProgressEvent.PROGRESS,onProgress); } public function onComplite(e:Event):void { if(loaderInfo.bytesLoaded == loaderInfo.bytesLoaded) { removeChild(wait); removeChild(waitLoading); } } public function onProgress(e:ProgressEvent):void { waitLoading.scaleX = loaderInfo.bytesLoaded/loaderInfo.bytesTotal; } } } Последний раз редактировалось skolm; 18.12.2012 в 15:55. |
|
|||||
Регистрация: May 2001
Адрес: Москва
Сообщений: 670
|
loaderInfo не определено до добавления в дисплэй лист
|
|
|||||
Banned
Регистрация: Dec 2012
Сообщений: 20
|
Добавлено через 51 секунду
импорт не помог,та же самая ошибка. |
|
|||||
Регистрация: May 2001
Адрес: Москва
Сообщений: 670
|
loaderInfo это переменная. ее инициализация происходит при добавлении объекта в дисплэй лист.
public function Preload():void { addChild(wait); addChild(waitLoading); // ждем добавления в дисплэй лист и инициализации нужным нам переменных addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // дождались. теперь к переменным можно обращаться loaderInfo.addEventListener(Event.COMPLETE,onComplite); loaderInfo.addEventListener(ProgressEvent.PROGRESS,onProgress); } |
|
|||||
Banned
Регистрация: Dec 2012
Сообщений: 20
|
А для чего это необходимо делать?
Получается это событие необходимо для всех классов? |
Часовой пояс GMT +4, время: 17:29. |
|
« Предыдущая тема | Следующая тема » |
|
|