Страница 1 из 2

Прелоадер

Добавлено: 15 авг 2011, 11:42
dr1emaver
Здравствуйте, пробовал код из темы http://flapps.ru/forum/topic23.html#p127 . Загрузка идет, но основная флешка не грузится. В основной флешке соответственно все функции приложения. CS5 выдает ошибку :
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at Main()
Гуглил, говорят, что это связано со stage в основной флешке.

код main такой :

Код: Выделить всё

public function Main():void        {                // получаем данные из flashVars            // id просматривающего приложение            flashVars = stage.loaderInfo.parameters as Object;            viewer_id = flashVars['viewer_id'];            // secret для генерации сигнатуры            secret = flashVars['secret'];            // id сессии            sid = flashVars['sid'];            // адрес API-сервиса            api_url = flashVars['api_url'];                        auth_key = flashVars['auth_key'];                        VK = new APIConnection(flashVars);                     VK.api('getProfiles',{ uids: viewer_id,fields:'photo_big,sex,bdate,city,country,education'},onComplete, onError); 

Re: Прелоадер

Добавлено: 18 авг 2011, 00:41
psix55
Слушай... Если я не туплю, то это не работает из-за того, что ты основное приложение погружаешь. Основное приложение не может получить доступ к flashVars.
Если я ошибаюсь, то попробуй мне написать в ICQ. Разберусь лично. Потом решение сюда выложим.
ICQ: 575-706-восемь восемь семь
Если меня в асе не будет, напиши тут в ЛС, я в асю зайду.

Re: Прелоадер

Добавлено: 19 авг 2011, 20:05
dr1emaver
Да в этом проблемка ) Мне советовали сделать так:

Код: Выделить всё

public function Main():void {    if (stage) init();    else addEventListener(Event.ADDED_TO_STAGE, init);} private function init(e:Event = null):void {    removeEventListener(Event.ADDED_TO_STAGE, init);     const flashVars:Object = stage.loaderInfo.parameters;     viewer_id = flashVars['viewer_id'];    // secret для генерации сигнатуры    secret = flashVars['secret'];    // id сессии    sid = flashVars['sid'];    // адрес API-сервиса    api_url = flashVars['api_url'];    auth_key = flashVars['auth_key'];    // вызываем функцию получения профиля пользователя, просматривающего приложение     VK = new APIConnection(flashVars);    VK.api('getProfiles',{ uids: viewer_id,fields:'photo_big,sex,bdate,city,country,education'},onComplete, onError); }
Ну к сожалению основную флешку не грузит..

Re: Прелоадер

Добавлено: 27 фев 2012, 12:12
gaponj88
Хочу поднять эту тему,так как не понятно до сих пор почему пишет:

Код: Выделить всё

TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".at Main()
Очень многие хотят сделать прелоадер,но сталкиваются с такой ошибкой!
при загрузке допустим картинки,все работает,а swf не хочет,постоянно объект "null"
Что нужно добавить,в код,или в главную флешку чтобы прелаодер все-таки загрузил swf !

Код: Выделить всё

package {    import flash.display.*;    import flash.events.*;    import flash.text.TextField;    import flash.net.URLRequest;     public class Preloader extends Sprite {        public function Preloader():void {            var url='1.swf';// ссылка на загружаемый swf            // создание и размещение поля с прогрессом загрузки            var progress_tf:TextField = new TextField();            progress_tf.x=530/2;            progress_tf.y=380/2;            addChild(progress_tf);             var loadURL:URLRequest=new URLRequest(url);            var loader:Loader = new Loader();            loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,onLoadProgress);// прогресс загрузки            loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoadComplete);// загружено            loader.load(loadURL);             function onLoadProgress(evt:ProgressEvent):void {                progress_tf.text = String(Math.round(100*(evt.bytesLoaded/evt.bytesTotal)))+"%";            }             function onLoadComplete(evt:Event):void {//окончание загрузки                // удаляем поле с прогрессом загрузки                removeChild(progress_tf);                // отображаем то что загрузилось                addChild(loader);            }        }    }}

Re: Прелоадер

Добавлено: 27 фев 2012, 13:07
sanych_dv
А, не посмотрел сразу.

Код: Выделить всё

             function onLoadComplete(e:Event):void {//окончание загрузки                // удаляем поле с прогрессом загрузки                removeChild(progress_tf);                // отображаем то что загрузилосьvar mc:MovieClip = LoaderInfo(e.currentTarget).content as MovieClip;                addChild(mc);            } 

Re: Прелоадер

Добавлено: 27 фев 2012, 13:37
gaponj88
Тоже самое,та же ошибка:

Код: Выделить всё

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

Re: Прелоадер

Добавлено: 27 фев 2012, 14:11
sanych_dv

Код: Выделить всё

 public function Preloader():void{    if (stage) init();    else addEventListener(Event.ADDED_TO_STAGE, init);} private function init(e:Event = null):void{// здесь лоадер} 
Иногда помогает задержка:

Код: Выделить всё

             function onLoadComplete(e:Event):void {                TweenLite.delayedCall(0.1, function _func():void {                    addChild (LoaderInfo(e.currentTarget).content as MovieClip );                });             } 
imho - делать прелоадер путем загрузки в него другого swf - бред.

Переходите из Flash IDE в нормальный редактор кода и пользуйте нормальный [Frame(factoryClass="Preloader")]

Re: Прелоадер

Добавлено: 27 фев 2012, 14:16
gaponj88
Нет ошибка все не пропадает(Печально

Re: Прелоадер

Добавлено: 27 фев 2012, 14:24
sanych_dv
Ваш код у меня во Flash IDE нормально работает.

Re: Прелоадер

Добавлено: 27 фев 2012, 14:27
gaponj88
sanych_dv
во Flash IDE
Это что?? :)