Как обезьяны исправить или переопределить класс swc во Flex?

Я использую swc из проекта Axiis для отображения визуализаций в проекте, над которым я работаю. Я столкнулся с ошибкой, из-за которой перекомпиляция библиотеки swc была бы простым решением, но я могу использовать только версию swc с ошибками.

У меня есть исходный код Axiis, и я скомпилировал версию с исправленной ошибкой, хотя мне не разрешено использовать ее из-за ограничений версии клиента.

Кто-нибудь знает, как я могу использовать обновленный класс / файл ActionScript в моем коде, чтобы он переопределил класс swc?


person wajiw    schedule 23.02.2011    source источник
comment
Под клиентскими ограничениями вы имеете в виду ограничения в Flash Player? Или ограничения со стороны организации, которая платит вам за разработку? В последнем случае я шокирован тем, что перекомпиляция кода неправильна, но исправление обезьяны - это хорошо. Это всего лишь два разных способа использования одного и того же кода. Один "правильный", а другой - взломанный.   -  person JeffryHouser    schedule 23.02.2011
comment
да, клиент за человеком, платит мне за создание приложения, и процесс проверки новой сборки сам по себе займет месяцы. Я ищу взлом, пока не получу одобрение новой библиотеки.   -  person wajiw    schedule 24.02.2011
comment
привет @Flextras, я работаю с Wa-jiw, согласен, что это взлом, но иногда swcs получают одобрение для нас на основании прохождения тестирования, и нам не разрешается изменять swc, но мы можем использовать уже протестированный (даже если он ошибки). Мы уже пробовали то, что предлагал Кристоф, но проблема в том, что переопределяемый код находится в классе, на который не ссылаются напрямую из приложения (проблема заключается в совместимости 3/4, исходный swc был написан для 3 и теперь используется в 4, axiis), даже делая ссылку на модифицированный класс и перекомпилируя, классы swc, похоже, используют старый. Спасибо   -  person shaunhusain    schedule 24.02.2011


Ответы (1)


Я не уверен, что вам разрешено делать следующее: помещать класс с вашим исправлением в исходный путь вашего основного приложения. Если вы убедитесь, что имена пакета и класса точно совпадают с исходным классом, компилятор выберет этот класс вместо того, который находится в библиотеке. Мы делаем это часто, когда хотим исправить фреймворк Flex, не компилируя библиотеки самостоятельно.

Другой вариант - использовать AS3Commons-Bytecode для создания прокси-сервера класс, который вы хотите исправить, а затем пусть ваш код работает на прокси-сервере вместо исходного экземпляра. Это чистое исправление времени выполнения. Он немного более продвинутый, и он будет работать только в том случае, если вы сможете каким-то образом заставить прокси-сервер заменить исходный экземпляр класса, который вам нужно исправить.

person Christophe Herreman    schedule 23.02.2011
comment
ваше первое предложение - это первое, что мы попробовали, но не смогли заставить его работать. Есть ли что-нибудь особенное в свойствах, которые нужно сделать, чтобы они заработали? Не уверен, что байт-код стоит проблем, чтобы заставить его работать ... - person wajiw; 24.02.2011
comment
Мы не делаем ничего особенного для этого. Все, что мы делаем, это помещаем класс в основной исходный путь и получаем зависимость библиотеки от библиотеки, содержащей класс, который мы хотим исправить. - person Christophe Herreman; 24.02.2011
comment
@wajiw, если вы имеете в виду, что не работает, потому что мастер создания класса не позволяет вам создать существующий класс, вы можете просто перейти в папку пакета и создать вручную, компилятор примет это без каких-либо проблем. - person Cotton; 24.02.2011
comment
@wajiw Это работает, только если библиотека объединена в код. Вы это указали? i.imgur.com/jQTxFhs.png - person Hoang Huynh; 05.09.2013