![]() |
ExternalInterface && C++ flash->CallFunction Crash (((
Привет ! вобщем
имеем не замысловатый код на С++ Код:
static Flash::IShockwaveFlash*flash;происходит RTE в С++, если код вешать в тру кэтч и смотреть описание ошибки, то MS как обычно на высоте - "произошла не известная ошибка" Может чего забыл ? кто в теме посоветуйте, во флеше есть ExternalInterface.addCallback("test",testHandler);, но мне кажется ( могу ошибаться ) просто попытка вызова метода на стороне флеша не должна выбивать RTE у С++ стороны PS info: - сама флешка написана на AS3 - код подписи на коллбэк лежит в обработчике ADDED_ON_STAGE - кроме этого в коде не чего нету ( ну только обработчик этого коллбэка ) - сам проект - Plugin к IE, то есть это ATL DLL - сама флешка нормально крутиться - если вызывать ИЗ флеша ExternalInterface.call, все работает ! ( конечно кода для этого на стороне С++ требуется куда больше, но суть в том, что работает ! ) - как я понял setVariable на AS3 проектах не работает ? ( прочитал древний пост от etc ) проблему, конечно, можно решить написав на стороне флеша ExternalInterface.call("getMessage",peekMessage);, повесить в таймер, например срабатывающий каждую секунду, а на стороне С++ при вызове getMessage отдавать список сообщений, которые должен обработать флеш но это криво PSS2 если не туда запостил, поправьте, по описанию я незнаю какой раздел подходит..., по логике наверно этот, так как сама флешка на as3 |
Цитата:
Я делал так: Код:
m_spPlayer->CallFunction((_bstr_t("<invoke name=\"newfunc\" returntype=\"xml\"><arguments><string>bl-bla</string></arguments></invoke>"));_bstr_t в comutil.h если что. |
все так же RTE ((( видимо IE плохо дружит с таким обращением (((
|
не стал создавать тему,
у меня похожи вопрос. Как на c# передать через com, флешки массив байт? желательно не при помощи tcp. |
ExternalInterface сериализует данные в XML, т.е. по-сути в обычную строку. Соответственно, десериализует тоже только из XML. Упаковать бинарные данные в строку можно разными способами, зачастую используют base64.
Т.е. на стороне c# пакуем bytearray->base64, сериализуем полученную строку в XML, согласно формату ExternalInterface, отдаем. Во флеше вынимаем строку, делаем обратное преобразование base64->bytearray. Как то так. Благо либы АС3 для работы с base64 имеются. Обратно из флэша в c# процедура передачи bytearray повторяется. ... И вообще, ваш вопрос практически не соотносится с темой топика. Нужно было создать отдельный топ. |
| Часовой пояс GMT +4, время: 20:14. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.