Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Прелоадер подгрузка основной SWF (http://www.flasher.ru/forum/showthread.php?t=164288)

kaploson 15.08.2011 15:22

Прелоадер подгрузка основной SWF
 
После долгих гуглений и форумов на данную тему начал делать сам)
И вот получил вот это:

Загрузка идет, но основная флешка не грузится.
В основной флешке соответственно все функции приложения. CS5 выдает ошибку :

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


Гуглил, говорят, что это связано со stage в основной флешке.

код основной флешки, которая подгружается флешкой прелоадера такой :
Код AS3:

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);

Код флешки прелоадера:

Код AS3:

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);
            }
        }
    }
}


andrew911 15.08.2011 15:37

В основной флешке начинайте манипуляции после ADDED_TO_STAGE

Код AS3:

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);
 
        .....
}


kaploson 15.08.2011 15:57

а можно поконкретней ?
Код AS3:

public function Main():void 
{
        if (stage) init();
        else addEventListener(Event.ADDED_TO_STAGE, init);
 // получаем данные из 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);
}
 
private function init(e:Event = null):void
{
        removeEventListener(Event.ADDED_TO_STAGE, init);
 
        .....
}

Если так то не работает..Прелоудер до конца доходит, но главная флешка не грузится..

dimarik 15.08.2011 16:11

Если первое условие не срабатывает, то зачем вы обращаетесь к stage?

kaploson 15.08.2011 16:25

А я что-то вообще не понял((

Можете поподробнее объяснить что вы имели ввиду?)

dimarik 15.08.2011 17:01

Код AS3:

private function init(e:Event = null):void {
    removeEventListener(Event.ADDED_TO_STAGE, init);
    const flashVars:Object = stage.loaderInfo.parameters;
}


toFL 15.08.2011 17:04

И еще, в строке ниже "as Object" не требуется, так как возвращаемый тип данных и так Object:
Код AS3:

flashVars = stage.loaderInfo.parameters as Object;

Собственно, dimarik, это уже написал постом выше.

kaploson 15.08.2011 17:21

не работает..

Код AS3:

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

и CS5 выдает :
Цитата:

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

in4core 15.08.2011 17:24

А вы случаем с языками программирования вообще знакомы или как?

Код AS3:

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'];
 
 
 
                // вызываем функцию получения профиля пользователя, просматривающего приложение
                //        var VK:APIConnection = new APIConnection(flashVars);
                        VK = new APIConnection(flashVars);
                        //getProfile(viewer_id);
                        VK.api('getProfiles',{ uids: viewer_id,fields:'photo_big,sex,bdate,city,country,education'},onComplete, onError);
 
}


toFL 15.08.2011 17:32

Цитата:

// ваша мутотень!!!
in4core, как обычно любезен :)


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

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