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

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

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
По умолчанию Доступность классов при подгрузке внешних swf

Здравствуйте коллеги.
Есть совсем детский как по мне вопрос доступности классов из подгружаемых SWF к загрузчикам.

В обратном порядке все работает но в подгружаемом клипе не могу получить parent. Выдает ошибку безопасности. Установки
Код AS3:
public function caller
и
Код AS3:
Security.allowDomain("*");
не дают нужного результата.

Вот как я реализовываю передачу из загрузчика в загружаемый объект.

Загрузчик (кто будет проверять код на сцену добавите текстовое поле с именем output)
Код AS3:
package {
	import flash.net.*;
	import flash.display.*;
	import flash.events.*;
	import flash.filters.*;
	import flash.geom.*;
 
	import flash.external.ExternalInterface;
	import flash.utils.Timer;
 
	public class Preloader extends MovieClip {
 
		public var _loader:Loader;
		private var cache:Object = new Object();
 
		public function Preloader() {
 
			addEventListener(Event.ADDED_TO_STAGE, init);
 
		}
		private function init(e:Event):void {
			removeEventListener(Event.ADDED_TO_STAGE, init);
 
			// готовим переменные к передаче
			cache.appData = new Object();
			cache.appData.p1 = 0;
			cache.appData.p2 = 1;
 
			// инициализация загрузки
			load("http://cite.com/test.swf?"+Math.random());
		}
 
		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);
		}
 
 
		private function onLoading(e:ProgressEvent):void {
 
			// процесс загрузки
			output.text = "Loading... "+e.bytesLoaded+" / "+e.bytesTotal;
		}
 
		private function onComplete(e:Event):void {
 
			// конец загрузки аттачим клип на сцену
			addChild(e.currentTarget.content);
 
			var mc:MovieClip = e.currentTarget.content as MovieClip;
  				mc.setParam(cache.appData); // передаём в клип
 
		}
	}
}
Объект загрузки
Код AS3:
package  {
 
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.system.Security;
 
	public class test extends MovieClip {
 
		private var wrapper:MovieClip = new MovieClip();
 
		public function test() {
			addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event):void {
 
			Security.allowDomain("*");
 
			removeEventListener(Event.ADDED_TO_STAGE, init);
 
			// получаем линк на загрузчик
			wrapper = MovieClip(parent.parent);
 
			output.appendText("init\n");
 
			for ( var prop in wrapper ) {
				output.appendText(prop+" >> "+wrapper[prop]+"\n");
			}
		}
 
		public function setParam(data:Object):void {
			output.appendText("setParam\n");
			for ( var prop in data ) {
				output.appendText(prop+" >> "+data[prop]+"\n");
			}
		}
	}
 
}
При обращении к parent
Код:
*** Нарушение безопасности изолированной среды ***
SecurityDomain "http://cite.com/test.swf?0.25371037563309073" пытался получить доступ к несовместимому контексту "file:///D|/workset/FlashIDE/fs/loader.swf"
SecurityError: Error #2047: Нарушение изолированной среды: parent: http://cite.com/test.swf?0.25371037563309073 не может осуществить доступ к file:///D|/workset/Новая%20папка/fs/loader.swf.
Заранее большое спасибо за любую помощь.
__________________
return this...

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

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Нельзя обращаться из одного домена безопасности к другому. Так как одна флешка лежит на локальном компьютере (file://), а вторая - на удаленном (http://), то как раз получается попытка взаимодействия разных SecurityDomain
__________________
...вселенская грусть

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

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

Добавлено через 59 минут
Диспатчить Ивенты решило вопрос)
__________________
return this...


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

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

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


 


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


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