Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Передача ссылки на обьект в загруженный swf (локальный и удаленный) (http://www.flasher.ru/forum/showthread.php?t=169647)

ZGG 09.10.2011 14:56

Передача ссылки на обьект в загруженный 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 из вне.
Подскажите пожалуйста.

Заранее спасибо.

dimarik 09.10.2011 20:24

Скорее всего, что ApplicationDomain разные.

ZGG 10.10.2011 03:04

dimarik, спасибо за ответ.

Пробовал использовать твой метод загрузки, получил тот же результат.
Не могу нормально передать ссылку на обьект в загруженный swf.

Может есть еще какие то варианты?

dimarik 10.10.2011 10:58

Хм... А я смог. Что я делаю не так?

ZGG 10.10.2011 23:14

dimarik, поделись кодом, пожалуйста. А то вот застрял на этой проблеме и дальше вся работа стала. ((

dimarik 11.10.2011 00:20

Давай, наоборот. С тебя минимальный неработающий пример.


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

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