Показать сообщение отдельно
Старый 09.10.2011, 14:56
ZGG вне форума Посмотреть профиль Отправить личное сообщение для ZGG Найти все сообщения от ZGG
  № 1  
Ответить с цитированием
ZGG
 
Аватар для ZGG

Регистрация: Nov 2005
Адрес: 26°58′49.06″ 49°24′35.72″ Ymaps
Сообщений: 119
Отправить сообщение для ZGG с помощью ICQ Отправить сообщение для ZGG с помощью Skype™
Question Передача ссылки на обьект в загруженный swf (локальный и удаленный)

Здравствуйте!
Пытаюсь загрузить swf и передать ему ссылку на экземпляр класса, созданного в родительской флешке, что бы он мог с ней работать. Тестирую это все дело в FD. Вот когда загружаю swf с той же папке где компилируется родительская флешка (bin) то все работает нормально. А вот как только пытаюсь загрузить эту флешку с сервера и после загрузки передаю ей ссылку, то получаю ошибку 1034 несоответствия типов.
На словах наверное объяснить не получилось, покажу кодом:

Swf который загружается:

Код AS3:
....
private var keyUpdater:KeyUpdater;
....
public function Main():void
{
	if (stage)
		init();
	else
		addEventListener(Event.ADDED_TO_STAGE, init);
}
 
private function init(e:Event = null):void
{
	Security.allowDomain("*")
	removeEventListener(Event.ADDED_TO_STAGE, init);
...
}
 
public function initGame(settings:Object):void
{
	var myUid:uint = settings.myUid
	var playersUids:Array = settings.playersUids
	keyUpdater = settings.keyUpdater
	// дальше вызываем методы и работаем со свойствами keyUpdater		
}
Родительская флешка:
Код AS3:
private var keyUpdater:KeyUpdater;
 
public function Tester()
{
 
	keyUpdater = new KeyUpdater()
 
	var loader:Loader = new Loader()
	loader.contentLoaderInfo.addEventListener(Event.INIT, loader_init)
	loader.load(new URLRequest("http://cs9415.vkontakte.ru/********/6066182fa765f4.zip"));
	addChild(loader)
}
 
private function loader_init(e:Event):void
{	
	e.currentTarget.content.initGame({myUid: 95703360, playersUids: [10154504, 95703360], keyUpdater: keyUpdater})
}
Вот ошибка которую получаю после загрузки swf в родительскую флешку:
Код:
[Fault] exception, information=TypeError: Error #1034: Ошибка типа Coercion: невозможно преобразовать KeyUpdater@46fb041 в KeyUpdater.
Fault, initGame() at Main.as:141
А вот если я загружаю swf локально, т.е:
Код AS3:
loader.load(new URLRequest("111.swf"));
то все работает отлично, загружается, вызываются методы и свойства из родительской флешки.

Еще один момент: родительская флешка и загружаемый swf компилируется из одного проекта, т.е.просто меняю главный класс документа (для загружаемой - Main, для родительской - Tester).
Скорее всего там что то с безопасностью. Надо, кажется, как то использовать LoaderContext при загрузке swf из вне.
Подскажите пожалуйста.

Заранее спасибо.
__________________
ЛОГИКА - залог программирования!