Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как передать FlashVars флешке, загружаемой с помощью Loader.loadBytes? (http://www.flasher.ru/forum/showthread.php?t=189999)

Silver Ghost 19.12.2012 09:10

Как передать FlashVars флешке, загружаемой с помощью Loader.loadBytes?
 
Когда загружаешь с помощью Loader.load, их можно передать с URLRequest. Но как это сделать, когда используется Loader.loadBytes?

bav 19.12.2012 11:03

Если вы создатель загружаемой флешки, то просто добавьте ей публичный метод, в котором укажете необходимые параметры. Загрузили флешку, вызвали метод, передали параметры. Как-то так:
Код AS3:

package 
{
        import flash.display.Sprite;
        import flash.events.Event;
 
        public class Main extends Sprite
        {
                public function Main():void
                {
                        if (stage) init();
                        else addEventListener(Event.ADDED_TO_STAGE, init);
                }
 
                private function init(event:Event = null):void
                {
                        removeEventListener(Event.ADDED_TO_STAGE, init);
                        // Вот здесь вызываем, или можно из другого класса
                        // вызвать, если нужно передать параметры до добавления
                        // на сцену. В этом случае нужно еще поставить какой-нибудь
                        // флаг типа flashVarsInited = true.
                        var info:Object = stage.loaderInfo.parameters;
                        useFlashVars(info.firstParam, info.secondParam, info.thirdParam);
                }
 
                public function useFlashVars(firstParam:int, secondParam:String, thirdParam:Number):void
                {
                        // do something
                }
 
        }
 
}


Silver Ghost 19.12.2012 11:29

Я, как раз таки, не имею доступа к загружаемой флешке.

Inet_PC 19.12.2012 11:58

Флешка которую собираемся эмбедить:
Код AS3:

package
{
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.text.TextField;
 
        public class Embedded extends Sprite
        {
                public function Embedded()
                {
                        super();
 
                        addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
                }
 
                private function onAddedToStage(e:Event):void
                {
                        var tf:TextField = new TextField();
                        addChild(tf);
 
                        var vars:Object = loaderInfo.parameters;
                        if (vars)
                        {
                                for (var prop:String in vars)
                                {
                                        var found:Boolean = true;
                                        tf.appendText("vars[" + prop + "] = " + vars[prop] + "\n");
                                }
                                if (!found)
                                {
                                        tf.appendText("vars are empty");
                                }
                        }
                        else
                        {
                                tf.appendText("vars === null");
                        }
                }
        }
}

Флешка которая передает параметры:
Код AS3:

package
{
        import flash.display.Loader;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.system.LoaderContext;
 
        public class TestLoadBytesFlashvars extends Sprite
        {
                [Embed(source="Embedded.swf", mimeType="application/octet-stream")]
                private static const SWF_EMBEDDED:Class;
 
                public function TestLoadBytesFlashvars()
                {
                        addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
                }
 
                private function onAddedToStage(event:Event):void
                {
                        var loader:Loader = new Loader();
                        var lc:LoaderContext = new LoaderContext();
                        lc.parameters = {"prop": "5"};
                        loader.loadBytes(new SWF_EMBEDDED(), lc);
 
                        addChild(loader);
                }
        }
}

Получаем на экране:
vars[prop] = 5

Silver Ghost 19.12.2012 12:18

Спасибо. Невнимательно читал документацию.

Frost47rus 19.12.2012 16:05

Спасибо, полезно =)


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

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