Как включить комплекты ресурсов в модули ActionScript с помощью Flex 4.1?
В простейших проектах Flex создайте модуль Flex MXML, а затем загрузите его с помощью ModuleManager. Нет проблем. Создайте класс ActionScript, расширяющий модуль, а затем настройте проект для его компиляции в модуль. Загрузите этот новый модуль вместо. Проект компилируется, но падает при запуске со следующей ошибкой:
"Ошибка: не удалось найти" контейнеры "скомпилированного пакета ресурсов для локали" en_US "."
Я считаю, что компилятор не может скомпилировать необходимые определения классов в модуль только ActionScript, в то время как он успешно выполняется для модуля MXML. Я вижу, что мой каркасный модуль MXML немного больше, чем мой модуль ActionScript (66 КБ против 45 КБ).
Как я могу решить эту проблему (если это действительно проблема)?
3 ответа
У меня была такая же проблема при компиляции библиотеки SWC. Мне удалось это исправить, добавив следующий раздел в проекты projectName-config.xml
<include-libraries append="true">
<library>${flexlib}/locale/{locale}/framework_rb.swc</library>
</include-libraries>
Это заставляет компилятор включать пакет ресурсов фреймворка для указанной локали.
Для меня проблема заключалась в том, чтобы выяснить, какой проект - в моем случае библиотека - и какой класс в этой библиотеке вызвал такое поведение (мне нужно было реализовать свои последние изменения - никакой информации от flashbuilder). Затем, применяя следующий атрибут к классу:
[ResourceBundle("containers")]
public class IpChecker {
...
Это добилось цели.
Хороший подход в подобных ситуациях - использовать -keep-генерируемый-actioncript для двух проектов, один с подходом mxml, а другой с действием actioncript. Затем вы можете сравнить код, чтобы увидеть, что может отсутствовать в одном проекте, но включено в другой.
Вы пытались добавить явную ссылку на [ResourceBundle("контейнеры")] в свой класс проекта ActionScript? Поведение mxmlc отличается от компилятора compc по многим уважительным причинам.