Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Предзагрузка (http://www.flasher.ru/forum/showthread.php?t=183602)

sharomet 27.08.2012 10:24

Предзагрузка
 
У меня 2 класса первый это Main который подключен к сцене и второй Loader который я вызываю через класс Main в котором и происходит предзагрузка..
Main:
Код AS3:

package net {
 
        import flash.display.LoaderInfo;
        import flash.display.MovieClip;
        import flash.events.*;
 
        public class Main extends MovieClip {
                private var _load:Load;
                public function Main() {
                        _load = new Load(loader);
                }
        }
}

и Loader:
Код AS3:

package net {
        import flash.display.MovieClip;
        import flash.events.*;
        import flash.display.LoaderInfo;
 
        dynamic public class Load extends MovieClip {
                private var loads;
                private var total;
                private var inf;
 
                public function Load() {
                        loaderInfo.addEventListener(ProgressEvent.PROGRESS, progressF);
                        loaderInfo.addEventListener(Event.COMPLETE, completeF); // событие наступает когда загрузка окончена
                }
 
                public function progressF(e:ProgressEvent){ //событие наступает в процессе загруски содержимого
                        loads=Math.round(e.bytesLoaded/1024); //функция вызываемая в процессе загрузки
                        total=Math.round(e.bytesTotal/1024);
                        inf=Math.round(loads/total*100);
                        Object(this).t1_txt.text=inf;
                        Object(this).k_mc.width=inf*3;
                }
                public function completeF(e:Event){ //функция вызывается после окончания загрузки
                        gotoAndStop(2);
                }
        }
}

на сцене есть 2 объекта t1_txt(текстовый) и k_mc(маска сама полоса)

при запуске пишет ошибку
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at net::Load()
at net::Main()
что он хочет?

F1esk 27.08.2012 11:22

loaderInfo в конструкторе Load не определено

sharomet 27.08.2012 11:50

А как передать
 
Цитата:

Сообщение от F1esk (Сообщение 1093870)
loaderInfo в конструкторе Load не определено

А как передать параметр loaderInfo из класса Main в класс Load?

caseyryan 27.08.2012 12:06

Во втором классе конструктор надо переделать так:
Код AS3:

public function Load(loader:Loader) {
        loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressF);
        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeF); // событие наступает когда загрузка окончена
}

а в первом передать в него загрузчик
Код AS3:

_load = new Load(new Loader());

п.с. эта архитектура кривая. Тут в идеале нужно вообще всё переделать.

sharomet 27.08.2012 12:23

Цитата:

Сообщение от caseyryan (Сообщение 1093878)
Во втором классе конструктор надо переделать так:
п.с. эта архитектура кривая. Тут в идеале нужно вообще всё переделать.

иак Loader - это же не класс класс загрузки Load зачем ему в скобках писать еще один класс?
мне просто нужно передать параметр loaderInfo из Main в Load как это сделать? можно его как то там объявить к примеру в переменной а потом передать его в другой класс?


Код AS3:

package net {
 
        import flash.display.LoaderInfo;
        import flash.display.MovieClip;
        import flash.events.*;
 
        public class Main extends MovieClip {
                private var _load:Load;
                public function Main() {
                        trace(this);
                        _load = new Load(new Loader);
                }
        }
}

Код AS3:

package net {
        import flash.display.MovieClip;
        import flash.events.*;
        import flash.display.LoaderInfo;
 
        dynamic public class Load extends MovieClip {
                private var loads;
                private var total;
                private var inf;
 
                public function Load(loader:Loader) {// теперь тут ошибка
                        loader.addEventListener(ProgressEvent.PROGRESS, progressF);
                        loader.addEventListener(Event.COMPLETE, completeF); // событие наступает когда загрузка окончена
                }
 
                public function progressF(e:ProgressEvent){ //событие наступает в процессе загруски содержимого
                        loads=Math.round(e.bytesLoaded/1024); //функция вызываемая в процессе загрузки
                        total=Math.round(e.bytesTotal/1024);
                        inf=Math.round(loads/total*100);
                        Object(this).t1_txt.text=inf;
                        Object(this).k_mc.width=inf*3;
                }
                public function completeF(e:Event){ //функция вызывается после окончания загрузки
                        gotoAndStop(2);
                }
        }
}


1046: Тип не найден или не является константой времени компиляции: Loader.

Art_133 27.08.2012 12:27

Скобки забыли после Loader:
Код AS3:

_load = new Load( new Loader() )


sharomet 27.08.2012 12:36

Цитата:

Сообщение от Art_133 (Сообщение 1093884)
Скобки забыли после Loader:
Код AS3:

_load = new Load( new Loader() )



ошибка всё та же((
И класса Loader() не существует зачем его заносить в скобки?

zalil ru/33708020 вот исходник, перед ru точку нужно поставить в сылку ато не пропускает

F1esk 27.08.2012 13:51

Цитата:

Сообщение от sharomet (Сообщение 1093886)
ошибка всё та же((
И класса Loader() не существует зачем его заносить в скобки?

класса "Loader()" действительно не существует, иначе для создания экземпляра пришлось бы писать Loader()()
а это уже намек на эротику, во всех двух смыслах :D

-De- 27.08.2012 14:02

Вы чо делаете, тут же предзагрузка самой флешки нужна, а не левого Loader.
Код AS3:

package net {
 
        import flash.display.LoaderInfo;
        import flash.display.MovieClip;
        import flash.events.*;
 
        public class Main extends MovieClip {
                private var _load:Load;
                public function Main() {
                        trace(this);
                        _load = new Load(loaderInfo);
                }
        }
}

Код AS3:

public function Load(loader:LoaderInfo) {
                        loader.addEventListener(ProgressEvent.PROGRESS, progressF);
                        loader.addEventListener(Event.COMPLETE, completeF); // событие наступает когда загрузка окончена
                }


sharomet 27.08.2012 14:17

Цитата:

Сообщение от -De- (Сообщение 1093897)
Вы чо делаете, тут же предзагрузка самой флешки нужна, а не левого Loader.
Код AS3:

package net {
 
        import flash.display.LoaderInfo;
        import flash.display.MovieClip;
        import flash.events.*;
 
        public class Main extends MovieClip {
                private var _load:Load;
                public function Main() {
                        trace(this);
                        _load = new Load(loaderInfo);
                }
        }
}

Код AS3:

public function Load(loader:LoaderInfo) {
                        loader.addEventListener(ProgressEvent.PROGRESS, progressF);
                        loader.addEventListener(Event.COMPLETE, completeF); // событие наступает когда загрузка окончена
                }


TypeError: Error #1010: Термин не определен и не имеет свойств.
at net::Load/progressF()

блин, без классов всё так хорошо работало связался на свою голову


Часовой пояс GMT +4, время: 22:34.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.