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

Вернуться   Форум Flasher.ru > Flash > Flash Приложения: AIR, Zinc и тд.

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
По умолчанию Security.allowDomain("*")

Здравствуйте.
Переношу проект под AIR. Компилятор ругается на
Код AS3:
Security.allowDomain("*");
Код:
	SecurityError: Error #3207: Application-sandbox content cannot access this feature.
	at flash.system::Security$/allowDomain()
	at tvTranslator/init()[D:\workset\bi\panasonic\tvTranslator.as:38]
	at runtime::ContentPlayer/loadInitialContent()
	at runtime::ContentPlayer/playRawContent()
	at runtime::ContentPlayer/playContent()
	at runtime::AppRunner/run()
	at ADLAppEntry/run()
	at global/runtime::ADLEntry()
Вкратце о проекте. Два флеш передающие данные через локалконекшен.

Добавлено через 3 минуты
Без
Код AS3:
Security.allowDomain("*");
флеш не передает данные
__________________
return this...

Старый 06.11.2012, 21:19
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 2  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Флеш плеер не передает? или Эйр?

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Флеш плеер не передает? или Эйр?
Пробовал и так и так. Пробовал убрать вообще настройки домена, но AIR который должен получать данные молчит. А при отправке
Код:
LocalConnection.send() failed[StatusEvent type="status" bubbles=false cancelable=false eventPhase=2 code=null level="error"]
__________________
return this...

Старый 06.11.2012, 21:45
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 4  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Обрамите try catch
__________________
In Code We Trust

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Цитата:
Сообщение от Astraport Посмотреть сообщение
Обрамите try catch
2 сек.

Может кто наглядно увидит причину

коннектор
Код AS3:
package  {
	import flash.net.LocalConnection;
	import flash.events.Event;
	import flash.events.StatusEvent;
	import flash.display.Sprite;
	import flash.text.TextField;
 
	public class SyncSystem extends Sprite{
 
		public var process:Object;
 
		protected var conn:LocalConnection;
		public var channel:String = "default";
 
		public function SyncSystem() {
			conn = new LocalConnection();
			conn.addEventListener(StatusEvent.STATUS, onStatus);
		}
 
		public function send(method:String, param:Object = null):void {
			conn.send(channel,method,param);
		}
 
		public function set active($setup:Boolean):void {
 
			if ($setup) {
				conn.connect(channel);
				conn.client = this;
			} else trace("UserReject connection");
		}
 
		public function command($pack:Object):void {
			process = $pack;
			dispatchEvent(new Event("CHANNEL"));
		}
 
		private function onStatus(event:StatusEvent):void {
 
			trace(event.level);
            switch (event.level) {
                case "status":
                    trace("LocalConnection.send() succeeded");
                    break;
                case "error":
                    trace("LocalConnection.send() failed"+event);
                    break;
            }
        }
	}
 
}
сендер
Код AS3:
package  {
 
	import flash.display.Sprite;
 
	import flash.events.Event;
	import flash.events.MouseEvent;
 
	import flash.net.URLLoader;
	import flash.net.URLRequest;
 
	import SyncSystem;
 
	import flash.events.NetStatusEvent;
	import flash.net.NetConnection;
	import flash.net.NetStream;
	import flash.events.AsyncErrorEvent;
 
	import flash.display.Loader;
	import flash.display.StageDisplayState;
 
	import flash.utils.ByteArray;
	import flash.media.SoundTransform;
 
	import flash.display.StageScaleMode;
	import flash.display.StageAlign;
	import flash.system.System;
 
	import flash.geom.Matrix;
	import flash.geom.Rectangle;
	import flash.display.Sprite;
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Loader;
	import flash.system.Security;
 
	import src.loadPictures;
	import flash.utils.Timer;
	import flash.events.TimerEvent;
 
	public class MainControl extends Sprite {
 
		private var xml:XML;
		private var sync:SyncSystem = new SyncSystem();
		public var sender:SyncSystem = new SyncSystem();
		private var cache:Object = new Object();
		private var setting:Object = new Object();
		private var pannel:Sprite; 
		private var strans:SoundTransform = new SoundTransform(0,0);
		private var timer = new Timer(5000);
 
		public function MainControl() {
			addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event):void {
 
			this.removeEventListener(Event.ADDED_TO_STAGE, init);
 
			stage.addEventListener(Event.RESIZE, onStageResize, false, 0, true);
			stage.align = StageAlign.TOP_LEFT;
			System.useCodePage = true;
 
			//Security.allowDomain("*");
 
			timer.addEventListener(TimerEvent.TIMER, refreshTimer);
 
 
			pannel = new Sprite();
 
			cache.cast = new Array();
			cache.playlist = new Array();
			cache.images = new Array();
 
			cache.img1 = new Sprite();
			cache.img2 = new Sprite();
 
			backimage.addChild(cache.img1);
			backimage.addChild(cache.img2);
 
			cache.frame = 0;
			cache.image = 0;
 
			cache.bid = 1;
 
			sender.channel = "AdminSecurity";
			sender.active = true;
			sender.addEventListener("CHANNEL", channel);
 
			addChild(pannel);
 
			ReadXML();
		}
 
		private function resetter(e:Event):void {
			cache.img1.alpha+=.1;
			cache.img2.alpha-=.1;
 
			if (cache.img1.alpha>=1) {
				e.target.removeEventListener(Event.ENTER_FRAME, resetter);
 
				while (cache.img2.numChildren) cache.img2.removeChildAt(0);
 
				cache.img3 = cache.img1;
				cache.img1 = cache.img2;
				cache.img2 = cache.img3;
				cache.img2.alpha = 1;
				cache.img1.alpha = 0;
 
				if (++cache.image==cache.images.length) cache.image = 0;
 
				cache.img1.addChild(new loadPictures(cache.images[cache.image]));
			}
		}
 
		private function refreshTimer(e:TimerEvent):void {
			cache.img1.addEventListener(Event.ENTER_FRAME, resetter);
		}
 
		private function channel(e:Event):void {
			var data = e.target.process;
			trace("channel");
			switch (data.using) {
				case "screen": {
					trace("screen"+data.bm);
				} break;
			}
		}
 
 
 
		private function ReadXML():void {
 
			xml = new XML(); 
 
			var XML_URL:String = "setting.xml"; 
			var myLoader:URLLoader = new URLLoader(new URLRequest(XML_URL)); 
				myLoader.addEventListener("complete", xmlLoaded); 
		}
 
		private function backSetter(e:Event):void {
			var f = cache.frame++%200;
 
			var d = 10;
 
			if (f==0) {
				cache.img1.visible = true;
				if (++cache.image==cache.images.length) cache.image = 0;
			} else
				if (f<d) {
					cache.img2.alpha -= Math.floor(((1/d)*100))/100;
					cache.img1.alpha += Math.floor(((1/d)*100))/100;
				}
 
			if (f==d) {
				while (cache.img2.numChildren) cache.img2.removeChildAt(0);
 
				cache.img3 = cache.img1;
				cache.img1 = cache.img2;
				cache.img2 = cache.img3;
				cache.img2.alpha = 1;
				cache.img1.alpha = 0;
			}
 
			if (f==11) {
				cache.img1.addChild(new loadPictures(cache.images[cache.image]));
				cache.img1.visible = false;
			}			
		}
 
		private function xmlLoaded(event:Event):void { 
 
			xml = XML(event.target.data); 
 
			titlebox.title.htmlText = xml.title;
			sync.channel = xml.channel;
			setting.icon = xml.directory.attribute("icons");
			setting.image= xml.directory.attribute("image");
			setting.video= xml.directory.attribute("video");
 
 
 
			for each(var library:XML in xml.video) 
				for each( var cast in library) {
					cache.playlist.push(setting.video+"/"+cast.attribute("src"));
					cache.cast.push({"title":cast, "icon":setting.icon+"/"+cast.attribute("icon"), "src":setting.video+"/"+cast.attribute("src")});
				}
 
			for each(var imgs:XML in xml.image)
				for each( var img in imgs) {
					cache.images.push(setting.image+"/"+img.attribute("src"));
				}
 
			cache.img1.addChild(new loadPictures(cache.images[0]));
 
 
			var i = 0;
			for each( var data in cache.cast) {
				i++;
 
				this['b'+i].image.selector.visible = false;
				this['b'+i].bid = i;
				this['b'+i].data = data;
				this['b'+i].title.text = data.title;
				this['b'+i].addEventListener(MouseEvent.MOUSE_DOWN, sending);
 
				this['b'+i].image.img.addChild(new loadPictures(data.icon));
				this['b'+i].w = this['b'+i].image.width;
				this['b'+i].h = this['b'+i].image.height;
 
				var connect_nc:NetConnection = new NetConnection();
					connect_nc.connect(null);
 
				this['b'+i].stream_ns = new NetStream(connect_nc);
				this['b'+i].stream_ns.checkPolicyFile = false;
				this['b'+i].stream_ns.bufferTime = 5;
				this['b'+i].stream_ns.client = this;
    			this['b'+i].stream_ns.soundTransform = strans; 
 
				this['b'+i].image.video.attachNetStream(this['b'+i].stream_ns);
				this['b'+i].stream_ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, AsyncErrorHandler);
				this['b'+i].stream_ns.addEventListener(NetStatusEvent.NET_STATUS, PlayerStatusHandler);
				this['b'+i].stream_ns.play(data.src);
				this['b'+i].stream_ns.seek(1);
				this['b'+i].stream_ns.pause();
 
			}
 
			onStageResize(new Event(""));
			timer.start();
 
			b1.show = true;
			b1.image.img.visible = false;
			b1.image.selector.visible = true;
 
 
			b1.addEventListener(Event.ENTER_FRAME, shower);
 
			cache.stream = b1;
 
			b1.stream_ns.resume();
			sync.send("command", {"using":"playlist","playlist":cache.playlist});
			sync.send("command", {"using":"play","src":b1.data.src});
		}
 
 
		private function PlayerStatusHandler(event:NetStatusEvent) {
 
			trace(event.info.code);
			switch (event.info.code) {
 
				case "NetStream.Play.Stop": {
					if (++cache.bid==7) cache.bid=1;
					this['b'+cache.bid].dispatchEvent(new MouseEvent(MouseEvent.MOUSE_DOWN));
				} break;
			}
		}
 
		private function sending(e:MouseEvent):void {
 
			if (cache.stream) {
				cache.stream.stream_ns.pause();
				cache.stream.stream_ns.seek(1);
				cache.stream.image.img.visible = true;
				cache.stream.image.selector.visible = false;
				cache.stream.show = false;
			}
 
			cache.bid = e.currentTarget.bid;
 
			e.currentTarget.show = true;
			e.currentTarget.image.img.visible = false;
			e.currentTarget.image.selector.visible = true;
 
			if (!e.currentTarget.hasEventListener(Event.ENTER_FRAME)) {
				e.currentTarget.addEventListener(Event.ENTER_FRAME, shower);
			}
			cache.stream = e.currentTarget;
			e.currentTarget.stream_ns.resume();
			sync.send("command", {"using":"play","src":e.currentTarget.data.src});
 
			if(stage.displayState != StageDisplayState.FULL_SCREEN)
				stage.displayState = StageDisplayState.FULL_SCREEN;
		}
 
		private function revers(e:MouseEvent):void {
			e.currentTarget.show = false;
			if (!e.currentTarget.hasEventListener(Event.ENTER_FRAME)) {
				e.currentTarget.addEventListener(Event.ENTER_FRAME, shower);
			}
		}
 
		private function shower(e:Event):void {
			e.target.image.width += (((e.target.show) ? e.target.w*1.1 : e.target.w)-e.target.image.width)/5;
			e.target.image.height += (((e.target.show) ? e.target.h*1.1 : e.target.h)-e.target.image.height)/5;
 
			e.target.title.y = e.target.image.y+e.target.image.height/2;
		}
 
		public function onImageData(d:Object):void {trace("img");}
 
		private function onStageResize(e:Event):void {}
 
		public function onMetaData(p_info:Object):void {}
 
		public function handleCoverImage(p_data:Array):void { 
			trace("handleCoverImage");
			var loader:Loader = new Loader();
			loader.loadBytes(p_data[0] as ByteArray);
			addChildAt(loader, 0);
		}
 
		private function AsyncErrorHandler(e:AsyncErrorEvent):void { trace(e.error);}
 
	}
}
ресивер
Код AS3:
package  {
 
	import flash.system.Security;
 
	import flash.net.NetConnection;
	import flash.net.NetStream;
 
	import flash.events.Event;
	import flash.events.NetStatusEvent;
 
	import flash.display.Sprite;
	import flash.display.StageDisplayState;
 
	import SyncSystem;
	import flash.display.BitmapData;
	import flash.display.Bitmap;
 
	import flash.utils.ByteArray;
	import flash.display.PixelSnapping;
 
	public class tvTranslator extends Sprite {
 
		private var cache:Object = new Object();
		private var sync:SyncSystem = new SyncSystem();
		private var stream_ns:NetStream;
 
		public function tvTranslator() {
			addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event):void {
			this.removeEventListener(Event.ADDED_TO_STAGE, init);
 
			//Security.allowDomain("localhost");
 
			stage.addEventListener(Event.RESIZE, onStageResize, false, 0, true);
 
			sync.channel = "PanasonicSecurity";
			sync.active = true;
			sync.addEventListener("CHANNEL", channel);
 
			cache.screen = new Sprite();
 
 
			var connect_nc:NetConnection = new NetConnection();
				connect_nc.connect(null);
 
			stream_ns = new NetStream(connect_nc);
			stream_ns.checkPolicyFile = false;
			stream_ns.client = this;
			stream_ns.addEventListener(NetStatusEvent.NET_STATUS, PlayerStatusHandler);
				videocont.video.attachNetStream(stream_ns);
 
		}
 
		private function onStageResize(e:Event):void {
 
			videocont.video.x = 0;
			videocont.video.y = 0;
		}
 
		private function channel(e:Event):void {
			var data = e.target.process;
			//logger.text += "channel\n";
			switch (data.using) {
				case "play": {
					broadcasting(data.src);
				} break;
				case "playlist": {
					cache.playlist = data.playlist;
					cache.trackid = 0;
				} break;
			}
		}
 
		function PlayerStatusHandler(event:NetStatusEvent) {
 
			trace(event.info.code);
			switch (event.info.code) {
 
				case "NetStream.Play.Stop": {
					//cache.trackid++;
					//broadcasting();
				} break;
			}
			if (cache.playerLastEvent == "NetStream.Buffer.Flush" && event.info.code == "NetStream.Buffer.Empty") { 
				StopPlayback(event);
			} else 
				if (cache.playerLastEvent == "NetStream.Buffer.Flush" && event.info.code != "NetStream.Buffer.Empty") cache.playerLastEvent = ""; 
					else if (event.info.code == "NetStream.Buffer.Flush")
						cache.playerLastEvent = "NetStream.Buffer.Flush";
		}
 
		private function StopPlayback(event:NetStatusEvent):void { trace("video end"); }
 
		private function broadcasting(src:String):void {
 
			stream_ns.play(src);
 
			if(stage.displayState != StageDisplayState.FULL_SCREEN)	stage.displayState = StageDisplayState.FULL_SCREEN;
		}
 
		private function createScreen(e:Event):void {}
		public function onMetaData(p_info:Object):void {}
	}
 
}
Добавлено через 12 минут
На сколько я понял у меня вообще не работает LocalConnection

Добавлено через 15 минут
Кто может, поделитесь простым примером связи через локалконекшен между двумя приложениями AIR

Добавлено через 21 минуту
Понял в чем проблема. В AIR к локалконекшену добавляется Ид приложения
Код AS3:
receivingLC.allowDomain('app#com.example');
 
receivingLC.connect('myConnection');
 
 
 
// sendingLC is an AIR application with app ID = com.example (and no publisher ID)
 
sendingLC.send('app#com.sample:myConnection', 'myMethod');
Добавлено через 30 минут
кто-то работал с локалконекшеном в эйре? Если есть такие поделитесь экземплом
__________________
return this...

Старый 17.02.2015, 01:12
SpetZ_Naz вне форума Посмотреть профиль Отправить личное сообщение для SpetZ_Naz Найти все сообщения от SpetZ_Naz
  № 6  
Ответить с цитированием
SpetZ_Naz

Регистрация: Aug 2012
Сообщений: 77
Так что, получилось обратиться к методам swf из AIR? А если swf загрузить в AIR loader'ом, можно обращаться к ее методам через LocalConnection?

Что-то на форуме не нашел четкого ответа как обойти SecurityError при использовании команды send('channel', 'method', 'message or Object') из AIR в загруженную в него swf. Может кто сталкивался с подобной проблемой? Тем много подобных, плодить еще одну не хочется..
__________________
Набирать программы могут многие, программировать - единицы

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

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

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


 


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


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