Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Динамическая передача значений: flashvars вместо externalinterface (http://www.flasher.ru/forum/showthread.php?t=171714)

xMailer 22.11.2011 18:36

Динамическая передача значений: flashvars вместо externalinterface
 
Задача: передать значение javascript переменной в swf.

От использования ExternalInterface пришлось отказаться, т.к. для обеспечения работоспособности требуется заставлять пользователя делать прописки в Global Security Settings panel, что не подходит в рамках проекта.

остался вариант с flashvars:
Код:

<script src="js/swfobject.js"></script>
        <script>
                function refresh(param){
                        // удалим все childs
                        var sender=document.getElementById("sender");
                        while(sender.hasChildNodes()){
                                sender.removeChild(sender.lastChild);
                        }
                        // добавим div
                        var sender = document.createElement("div");
                        sender.id  = "sender_swf";
                        document.getElementById("sender").appendChild(sender);
                        // swf
                        swfobject.embedSWF(
                                "sender.swf",
                                "sender_swf", "100%", "100%", "10.0.0",
                                "expressInstall.swf",
                                {val_user: param},
                                {},
                                {id:"sender_swf"});
                }
        </script>
</head>
<body onload="refresh('start')">
        <button onclick="refresh('user value')">Послать</button>
        <div id="sender"></div>
</body>

Существуют ли более рациональные варианты передать значение javascript переменной в swf при такой постановке задачи??
Спасибо.

Genzo 22.11.2011 18:39

Цитата:

От использования ExternalInterface пришлось отказаться, т.к. для обеспечения работоспособности требуется заставлять пользователя делать прописки в Global Security Settings panel, что не подходит в рамках проекта.
Бред.

xMailer 22.11.2011 20:24

Цитата:

Сообщение от Genzo (Сообщение 1047571)
Бред.

слушай умник, ты меня раздражаешь, есть расширение для firefox с sidebar, в котором находится swf. Необходимо передавать по событию в ff переменную в swf. Попробуй это организовать через ExternalInterface, я тебе заплачу и скажу что ты молодец

gloomyBrain 22.11.2011 20:44

Себя Вы, видимо, не считаете с умником. Ну, может и правильно. Если Вы хотите чтобы кто-то решил Вашу проблему и готовы заплатить - то вы ошиблись разделом. А то, что написанное Вами - бред, это правда.
Если хотите получить помощь - приведите код работы с ExternalInterface (ну и js-составляющую для полноты картины)

crazyone 22.11.2011 20:48

Цитата:

Сообщение от xMailer (Сообщение 1047596)
слушай умник, ты меня раздражаешь, есть расширение для firefox с sidebar, в котором находится swf.

С этого и надо было начать.

artcraft 22.11.2011 20:53

если параметры передаются только при старет то flashvars - самый подходящий способ

xMailer 22.11.2011 21:11

Цитата:

Сообщение от gloomyBrain (Сообщение 1047605)
Себя Вы, видимо, не считаете умником

я считаю себя не умнее окружающих, и если кто-то что-то говорит, то пытаюсь найти в этом смысл, а не ... забыли...далеко от темы
Цитата:

Сообщение от gloomyBrain (Сообщение 1047605)
Если хотите получить помощь - приведите код работы с ExternalInterface (ну и js-составляющую для полноты картины)

Код AS3:

package 
{
        import flash.display.*;
        import flash.events.*;
        import flash.text.*;
        import flash.external.ExternalInterface;
 
        public class Main extends Sprite
        {
                private var txt:TextField;
 
                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);
                        var format:TextFormat = new TextFormat();
                        format.align = TextFormatAlign.LEFT;
                        format.size = 6;
 
                        txt = new TextField();
                        txt.defaultTextFormat = format;
                        txt.autoSize = TextFieldAutoSize.LEFT;
                        txt.text = "";
                        txt.x = stage.stageWidth/2-txt.width/2;
                        txt.y = stage.stageHeight/2-txt.height/2;
                        addChild(txt);
 
                        ExternalInterface.addCallback("setparam", setparam);
                }
 
                private function setparam(param:String):void {
                        txt.text = "param: " + param;
                }               
        }
}

Код:

<script src="swfobject.js" type="text/javascript"></script>
        <script>
                function sets(param) {
                        document.getElementById("fsidebar-movie").setparam(param);
                }
               
                swfobject.embedSWF(
                        "chrome://fsidebar/content/sample.swf",
                        "sender-swf", "100%", "100%", "10.0.0",
                        "expressInstall.swf",
                        {}, {}, {id:"fsidebar-movie"});
                }
       
        </script>
       
  </head>
  <body>
        <div>
                <button onclick="sets('1111111111111111111111111111111')">Послать</button>
        </div>
        <div id="sender-swf"></div>
  </body>

ExternalInterface - не работает, как можно еще, код в посте №1, могут быть еще варианты??? кода не надо? надо возможное направление

Добавлено через 3 минуты
Цитата:

Сообщение от artcraft (Сообщение 1047613)
если параметры передаются только при старет то flashvars - самый подходящий способ

дело в том, что не только, по событию, т.е. нужно периодически передавать в swf новое значение параметра. Очевидным является ExternalInterface, но он не подходит одназначно. SetVariable в As3 не работает.

Hauts 23.11.2011 00:20

Возможно использовать еще одну невидимую флэшку, которую по-необходимости обновлять (заново встраивать) с нужными данными через flashvars? Флэшка при запуске через LocalConnection будет сообщать основной все свои флэшвары. Такой вариант сойдет?

xMailer 23.11.2011 10:03

Цитата:

Сообщение от Hauts (Сообщение 1047647)
Возможно использовать еще одну невидимую флэшку, которую по-необходимости обновлять (заново встраивать) с нужными данными через flashvars? Флэшка при запуске через LocalConnection будет сообщать основной все свои флэшвары. Такой вариант сойдет?

именно такой вариант используется, правда этот вариант похож на "костыли", но посмотрим как будет в эксплуатации. Спасибо. Тему можно закрывать.

maxkar 23.11.2011 12:17

Цитата:

Сообщение от xMailer (Сообщение 1047618)
ExternalInterface - не работает, как можно еще, код в посте №1, могут быть еще варианты??? кода не надо? надо возможное направление

Плеер дебажный? Там SecurityError случайно не возникает на addCallback? Я не вижу в коде установки
Код:

<param name="allowScriptAccess" value="always" /> // или его аналога в swfObject
flash.system.Security.allowDomain(sourceDomain); // в коде AS



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

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