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

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

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
По умолчанию Логгер: AIR - AS2 (localhost)

Вот, увидел, что оказывается каждый сложившийся флешер должен написать логгер в AIR С первого разу не получилось.
Вопрос такой: Есть АИР приложение (ну простое до безумия, код ниже), если создать еще 1 локал коннекшн и из него посылать сообщения прямо в том же приложении - они нормально приходят. Если пытаюсь их послать из АС2 флешки загруженой с localhost - естесственно, ничего не приходит. Пробовал по-всякому alowDomain и alowInsecureDomain - никаких изменений. Чего мне не хватает?
Код:
package com.aditall.log 
{
	import flash.events.Event;
	import flash.events.StatusEvent;
	import flash.net.LocalConnection;
	
	[Event("logReceived")]
	
	/**
	 * Logger class.
	 * @author wvxvw
	 */
	public class Logger extends LocalConnection
	{
		public static const LOG_RECEIVED:String = "logReceived";
		private static const MIXER_LC_NAME:String = "aditallmixer";
		
		private var _logMessage:String = "Connecting...";
		
		public function Logger() 
		{
			super();
			client = this;
			allowDomain("localhost", "http://localhost/local/MIXER/mixer_build_mtasc.swf");
			allowInsecureDomain("localhost", "http://localhost/local/MIXER/mixer_build_mtasc.swf");
			connect(MIXER_LC_NAME);
		}
		
		public function log(logStr:String):void { logMessage = logStr; }
		
		[Bindable("logReceived")]
		public function get logMessage():String { return _logMessage; }
		
		public function set logMessage(s:String):void
		{
			trace("called "+s);
			_logMessage = s;
			dispatchEvent(new Event(LOG_RECEIVED));
		}
	}
	
}
Код:
<?xml version="1.0"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
	applicationComplete="handleAppComplete(event)">
	<mx:Script>
		<![CDATA[
			import com.aditall.log.Logger;
			import flash.events.Event;
			import flash.events.StatusEvent;
			import flash.net.LocalConnection;
			import mx.core.WindowedApplication;
			
			public var loggerLC:Logger;
			//public var testLC:LocalConnection;
			
			[Bindable]
			public var loggerMessage:String;
			
			public function handleAppComplete(evt:Event):void
			{
				logArea.width = (evt.target as WindowedApplication).width - 80;
				logArea.height = (evt.target as WindowedApplication).height - 80;
				//testLC = new LocalConnection();
				//testLC.addEventListener(StatusEvent.STATUS, handleStatus);
				loggerLC = new Logger();
				loggerLC.addEventListener(Logger.LOG_RECEIVED, handleLogUpdate);
				loggerLC.log(loggerLC.domain);
				//testLC.send("aditallmixer", "log", "Hi!");
			}
			
			private function handleStatus(evt:StatusEvent):void 
			{
				trace(evt.level);
			}
			
			private function handleLogUpdate(evt:Event):void 
			{
				loggerMessage = loggerLC.logMessage;
			}
		]]>
	</mx:Script>
	<mx:TextArea text="{loggerMessage}" id="logArea" />
</mx:WindowedApplication>
AS2:
Код:
....
if (!_lc)
		{
			_lc = new LocalConnection();
			_lc.send(_lcName, LOG, _settings);
			_lc.onStatus = Delegate.create(Tracer, onLCStatusDelegate);
			_lc.allowDomain("app#com.aditall.log.logger");
		}
....
_lc.send(_lcName, LOG, sender + JS_SEPARATOR + message);
....
static private function onLCStatusDelegate(infoObject:Object):Void 
	{
		getURL(JS_TRACER + "[onStatus]" + JS_SEPARATOR + infoObject.level + " domain " + _lc.domain() + JS_CLOSE);
	}
....
последнее все время выводит: "[onStatus] => error domain localhost"
__________________
Hell is the possibility of sanity

Старый 16.10.2008, 20:33
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 2  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
попробуй дать название lcName так, что бы он начинался с "__".

Старый 16.10.2008, 21:21
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 3  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Пасиб, уже нашел, оказалось, в что LocalConnection.send() метод вызываемый у AIR ЛК объекта должен был начинаться с домейна этого объекта. Т.е. допустим, я хотел вызвать log("Привет"); тогда нужно было писать так:
Код:
mySendingLC.send("app#com.aditall.log.logger.1234567890:log", "Привет");
Там где 123456789 на самом деле должен быть гуид который генерится при создании АИР приложения, все остальное соответственно по схеме "app" - значит, что это АИР приложение com.aditall.log.logger - это путь к классу (т.е. класс называется Logger).
__________________
Hell is the possibility of sanity

Старый 16.10.2008, 21:32
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 4  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
если конекшен нэйм начинает с __, то доменная политика ограничиваться только allowDomain

Старый 16.10.2008, 21:38
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 5  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Хы, действительно так, пасиб.
__________________
Hell is the possibility of sanity

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:20.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
localconnection , localhost

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

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


 


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


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