![]() |
Несовместимость абсолютно одинаковых интерфейсов
Доброго времени суток.
В основной проект я подгружаю флешку, в которой содержится mxml элемент класса TextTool (единственный такой элемент), который implements="IModule" Код AS3:
В главном проекте, после подгрузки флэшки я достаю этот TextTool и смотрю если он подходит к интерфейсу IModule: Код AS3:
|
Потому что надо грузить в одну песочницу
в контекст загрузки надо указать тот же applicationDomain домен, что и у подгружающей флешки Код AS3:
|
Я гружу локальный свф, так что подставил
Код AS3:
Код AS3:
|
Не может этого быть. Значит проблема с самим интерфейсом. У него точно такой же пакет? Такое же название? Такой же набор методов? Та же область видимости?
|
Код AS3:
Код AS3:
|
Цитата:
Всё логично но не получатеся :*( Код AS3:
|
Цитата:
|
Да, такое же.
|
Код AS3:
|
Цитата:
Попробуйте затестить с этим: Код AS3:
|
Выразился я не правильно.
Сам объект-то будет другим, но приложение будет знать какой домен родительский. Код с созданием нового объекта ApplicationDomain и указанием ему родительского аппдомена работает. Это копипаст из реального приложения, в котором так же подкружаемые флешки используют те же интерфейсы, что и подгружающая |
|
Вложений: 1
Спасибо , прочитал ту статью, перепробовал все варианты, в любом случае проверка возвращает false.
Я прицепил маленький проект, тут тоже проверка возвращает false. Посмотрите пожалуйста. |
У меня дает true.
Добавлено через 5 минут Только я пользовался одним общим ITest, а не разными в разных проектах. Может в этом дело? |
Вы оставили ITest в Loader и удалили из Loaded и убрали оттуда implements="ITest"?
|
Я объединил два проекта в один. Исходный код поменял -- название одного из Main.mxml изменил на Main1.mxml.
|
А можете скинуть то что у вас пожалуйста ? Я не очень понимаю как вы объединили :)
И вы попробовали потестить мой код в изначальном виде? Тоже true выдало? Добавлено через 2 часа 16 минут Нет, правда, как вы объединили ? Я засунул проект модуля в главный проект, закинул интерфейс в swc, swc положил в проект модуля, добавил этот swc и в тот и в другой проект, больше никаких ITest у меня нигде нет, запускаю, проверяю - всё равно false. Пожалуйста, скиньте свою версию. |
Я положил два Main.mxml рядом, переименовав один из них. ITest.as стал общим. Ни строчки кода не менял. Без свиков.
"Версия" на работе осталась, вероятно, выложу. |
Да, работает, спасибо.
Скажите, но ведь тут написано что по идее дочерний апп домен, при совпадении классов, должен наследовать родительские классы. И что делать, если, к примеру, другой человек сделал свой модуль используя мой интерфейс, и просто прислал мне swf ? И если у меня есть доступ к методам подгружаемого объекта, почему нельзя проверить если он может использовать мой интерфейс ? Почему имеет значение название интерфейса, пакет в котором он находится ? А в этом случае, это вообще должен быть 1 и тот же файл. Почему? |
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Там прикол в том, что у него оба ITest.as лежат в топ-левеле в разных проектах и идентичны до байта. А скастовать один к другому не получается.
|
Попробовал пошаманить, и заметил, что если основной проект загружает свфку модуля с папки в которой он был скомпилен, то получается кастовать к интерфейсу, а если передвинуть этот же свф в другую папку, то не получается :
Код:
|..А почему, не знаю. |
Не очень понятно как module::ITest может скастоваться к ITest. Похоже, пора мне снова взять в руки шашки.
|
| Часовой пояс GMT +4, время: 23:51. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.