Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.11.2012, 14:56
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 1  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
По умолчанию Помощь в организации дата-моста между двумя 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 минуты
вопрос закрыт. Всего то на всего -> параметры публикации
__________________
return this...


Последний раз редактировалось AlexCooper; 26.11.2012 в 21:03.
Создать новую тему Ответ Часовой пояс GMT +4, время: 09:44.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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