Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Помощь в организации дата-моста между двумя Loader swf (http://www.flasher.ru/forum/showthread.php?t=187923)

AlexCooper 26.11.2012 14:56

Помощь в организации дата-моста между двумя Loader swf
 
Здравствуйте.
Не пойму в чем суть моей ошибки.
Есть клип который грузит свф и передает ему данные. Так же в методе onComplete вешает листнер на событие. Подгружаемый клип генерирует событие но обрабатывается оно только в локальном тесте. При выгрузке на сервер передача данных из загрузчика в подгружаемый исполняется а событие не регистрирует.

Код AS3:

package {
 
        import flash.net.*;
        import flash.display.*;
        import flash.events.*;
 
        import flash.external.ExternalInterface;
        import flash.utils.Timer;
 
        public class Bridgework extends Sprite {
 
                public var account:Object = new Object();
                private var cache:Object = new Object();
                private var frontend:*;
 
                public var _loader:Loader;
 
                public function Bridgework() {
                        addEventListener(Event.ADDED_TO_STAGE, init);
 
                }
                private function init(e:Event):void {
                        removeEventListener(Event.ADDED_TO_STAGE, init);
 
 
                        if (ExternalInterface.available) {
                try { 
                                        ExternalInterface.addCallback("take", takeAPI);
 
                                        if (checkJavaScriptReady()) {
                            output.appendText("JavaScript is ready.\n");
                    } else {
 
                        var JSConnector:Timer = new Timer(100, 0);
                                                        JSConnector.addEventListener(TimerEvent.TIMER, timerHandler);
                                                        JSConnector.start();
                    }
                } catch (error:SecurityError) {
                        output.appendText("A SecurityError occurred: " + error.message + "\n");
                } catch (error:Error) {
                        output.appendText("An Error occurred: " + error.message + "\n");
                }
            } else {
              output.appendText("External interface is not available for this container.");
            }
 
                        // Test MODE
                        if (!ExternalInterface.call("window.location.href.toString")) {
                                var temp = new Object();
                                        temp.user_id = 1;
                                        temp.user_link = "";
                                        temp.user_name = "";
                                        temp.user_lastname = "";
                                        temp.sex = "";
                                        temp.birthday = "";
                                        temp.vip_end = 0;
                                        temp.is_payable = 0;
                                        temp.city_id = 8;
                                        temp.photo_box = "";
                                        temp.photo_small = "";
                                        temp.photo_big = "";
                                        temp.city_name = "";
                                        temp.photo_97 = "";
                                        temp.slogan = "";
                                        temp.photo_192 = "";
 
 
                                account.api = "fs";
 
                                setAccount(temp);
                        }
                }
 
                private function takeAPI($data:Object):void {
 
                        recurs($data);
 
                        account.api = $data.api;
 
                        switch ($data.command) {
                                case "authorizer": {
                                        setAccount($data.data);
                                } break;
                                case "friendlist": {
                                        setFriend($data.data);
                                }
                        }
                }
 
                private function setAccount($data:Object):void {
                        output.appendText("setAccount\n\n");
 
                        var valid = true;
 
                        switch (account.api) {
                                case "fs": {
                                        account.uid = $data.user_id;
                                        account.real_name = $data.user_name+" "+$data.user_lastname;
                                        account.first_name = $data.user_name;
                                        account.last_name = $data.user_lastname;
                                        account.nick_name = account.real_name;
                                        account.bday = $data.birthday;
                                        account.bdate= $data.birthday.substring(0,4)+"."+$data.birthday.substring(5,7)+"."+$data.birthday.substring(8,10);
                                        account.lday = StrToDate(account.bday);
                                        account.age = getAge(account.lday);
                                        account.sex = ($data.sex=="m") ? 1 : 0;
                                        account.city = $data.city_name;
                                        account.city_id = $data.city_id;
                                        account.photo = $data.photo_box;
                                        account.country = "";
                                        account.country_id = 0;
 
                                } break;
 
                                default: valid = false;
                        }
 
                        account.sex_find = (account.sex==1) ? 0 : 1;
                        account.hidebday = true;
                        account.lang_app = "rus";
                        account.lang_my = "rus";
 
                        if (valid) {
                                recurs(account);
                                load("http://cite.com/multiapi/version0.66.swf?"+Math.random());
                        }
                }
 
                private function StrToDate(str:String):Date {
                        trace(str);
                        var year = Number(str.substring(0,4));
                        var mon = Number(str.substring(5,7))-1;
                        var day = Number(str.substring(8,10))+1;
 
                        return new Date(year,mon,day);
                }
 
                private function getAge(today:Date):Number {
 
                        var newYear:Date = new Date();
 
                        var todayTime:Number = today.time;
                        var newYearTime:Number = newYear.time;
                        var millisLeft:Number = newYearTime - todayTime;
 
                        var now = new Date(1900,00);
 
                        var before = new Date(now.setMilliseconds(millisLeft));
 
                        return before.getFullYear()-1900;
                }
 
                private function recurs($e:Object):void {
                        if (!cache.offset) cache.offset = 0;
 
                        cache.offset++;
                        var offset:String = " ";
                        for ( var i=0; i<=cache.offset; i++) {
                                offset+=">>";
                        }
 
                        for ( var data in $e) {
                                output.appendText(offset+" || "+data+" = "+$e[data]+"\n");
 
                                recurs($e[data]);
                        }
 
                        cache.offset--;
                }
 
                private function APIRequestion(e:Event):void {
                        if (cache.apiReq) {
                                output.appendText(cache.apiReq+"\n");
                                cache.apiReq = null;
                        }
                }
 
 
                private function gets(e:MouseEvent):void {
                        /*output.appendText("Call to API\n");
                        output.appendText("UserID: " + cache.appData + "\n");*/

                        for ( var item in cache.appData) {
                                output.appendText(item+" >> "+cache.appData[item]+" \n");
                        }
                        /*if (ExternalInterface.available) {
                                ExternalInterface.call("api","User.getFriends", {userIds:});
                        }*/

                }
 
 
        private function checkJavaScriptReady():Boolean {
            var isReady:Boolean = ExternalInterface.call("isReady");
 
                        if (isReady) {
                                cache.appData = ExternalInterface.call("getAppData");
                        }
 
            return isReady;
        }
        private function timerHandler(event:TimerEvent):void {
            output.appendText("Checking JavaScript status..."+(new Date())+"\n");
            var isReady:Boolean = checkJavaScriptReady();
            if (isReady) {
                output.appendText("JavaScript is ready.\n");
                Timer(event.target).stop();
            }
        }
        private function clickHandler(event:MouseEvent):void {
            if (ExternalInterface.available) {
                ExternalInterface.call("sendToJavaScript", input.text);
            }
        }
 
                public function load(urlMain:String):void {
                                var url:URLRequest=new URLRequest(urlMain);
                                _loader = new Loader();
 
                                _loader.load(url);
                                _loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);
                                _loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,onLoading);
                                _loader.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler);
 
                                addChild(_loader);
                }
 
                private function uncaughtErrorHandler(event:UncaughtErrorEvent):void {
 
                        pre.height = 300;
 
            if (event.error is Error) {
                var error:Error = event.error as Error;
 
                                pre.text ="ERROR ****\n";
                                pre.appendText(String(error));
 
            } else if (event.error is ErrorEvent) {
                var errorEvent:ErrorEvent = event.error as ErrorEvent;
 
                                pre.text ="ERROR EVERT\n";
                                pre.appendText(String(error));
 
            } else pre.text = "NON ERROR";
 
 
                        addChild(pre);
        }
 
                private function onLoading(e:ProgressEvent):void {
 
                        pre.text = e.bytesLoaded+" / "+e.bytesTotal;
                }
 
                private function onComplete(e:Event):void {
 
                        frontend = e.currentTarget.content;
                          frontend.setAccount(account);
                        if (cache.friend) frontend.setFriend;
 
                        frontend.addEventListener("APICALL", traceCall);
                        frontend.addEventListener("EVENT", traceEvent);
 
                        frontend.addEventListener("QUEST_API", questForApi);
                        frontend.addEventListener("INVITE_FRIEND", invite);
 
                        //addChild(frontend);
                }
 
                public function questForApi(e:Event):void {
                        trace("SET QUEST");
 
                        alpha-=.1;
 
                        switch (e.target.API.method) {
                                case "balanse": {
                                        ExternalInterface.call("paySystem", e.target.API.data);
                                } break;
                        }
                }
 
                private function invite(e:Event):void {
 
                        ExternalInterface.call("invite");
                }
 
                private function traceEvent(e:Event):void {
                        trace("caller");
                        output.appendText("callerEve\n");
 
                        for ( var d in e.target.api) {
                                output.appendText(d+" >> "+e.target.api[d]+"\n");
                        }
 
                        if (ExternalInterface.available) {
                                ExternalInterface.call("apieve",e.target.api.method, e.target.api.param);
                        }
                }
 
                private function traceCall(e:Event):void {
                        trace("caller");
                        output.appendText("caller\n");
 
                        for ( var d in e.target.api) {
                                output.appendText(d+" >> "+e.target.api[d]+"\n");
                        }
 
                        if (ExternalInterface.available) {
                                ExternalInterface.call("api",e.target.api.method, e.target.api.param);
                        }
                }
        }
}

Код AS3:

public var API:Object = new Object();
......
Security.allowDomain("*");
......
private function CALL($m:String, $d:* ):void {
        trace("Call");
        trace("method :: "+$m+" = "+$d);
        API.method = $m;
        API.data = $d;
 
        dispatchEvent(new Event("QUEST_API"));
}
.....
CALL("balanse", 1);

Хочу еще добавить что uncaughtErrorHandler регистрирует Error: Error #1502

И все это происходит только на удалённом хосте.

Добавлено через 7 минут
Думаю уже перейти на интерфейсы

Добавлено через 1 час 34 минуты
вопрос закрыт. Всего то на всего -> параметры публикации


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

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