Сгенерированный код Flex 3 IDE не выглядит правильным - PullRequest
1 голос
/ 03 ноября 2011

У меня есть класс ExtendedComboBox.as

В упаковке com.ui.comboBox

Так что я его импортирую.import com.ui.comboBox.ExtendedComboBox;

Когда я делаю <comboBox:ExtendedComboBox /> Он не может найти класс.

Когда я использую автоматически сгенерированный код <comboBox1:ExtendedComboBox />, он работает нормально

Мой вопрос: почему автоматически сгенерированный код добавляет 1?Откуда приходит 1?

1 Ответ

1 голос
/ 04 ноября 2011

Это не импорт в блоке скрипта, а пространство имен, определенное в родительском компоненте (например, Application), которое определяет пространство имен в теге и позволяет расположить класс.

Пространство имен, которое вы на самом деле используетеИспользование (например, " comboBox " или " comboBox1 ") довольно произвольно:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:comboBox2012="com.ui.comboBox.*">
  ...
  <comboBox2012:ExtendedComboBox />

Таким образом, действительно нет "неправильного" пространства имен.

Относительно того, почему " 1 " был добавлен в IDE, я могу только догадываться.Возможно, Flex Builder 3 начинает считать с 1, чтобы сохранить уникальность пользовательских пространств имен, или как-то у вас уже было « comboBox » в качестве пространства имен.Я не могу проверить, так как у меня есть только FB4, который из моих тестов автоматически генерирует " comboBox2 ", если " comboBox " уже зарезервирован.

ТамЕще один вопрос о том, как заставить автоматически сгенерированное пространство имен придерживаться вашего определения, которое, возможно, стоит проверить: Как заставить FlashBuilder использовать собственный префикс пространства имен


Обновление: Поведение, воссозданное в Flash Builder 4

Я столкнулся с экземпляром, в котором Flash Builder 4 будет увеличивать пространство имен точно так, как оно указано в вопросе.А именно, у меня есть одна структура пакета в одном из моих проектов:

--com
    |
    |--mydomain
    |    |
    |    |--behaviors
    |    |--components
    |    |--skins
    |    |--utils
    |
    |--anotherdomain
         |
         |--components

Всякий раз, когда я использую компоненты из com.mydomain.components , в среде IDE используется автоматически сгенерированное пространство имен " компоненты ».Впоследствии, если я затем использую компонент из пакета com.anotherdomain.components , среда IDE автоматически создает (увеличенное) пространство имен " components1 ".

Итаквозможно, вы имели подобную настройку, когда испытывали такое же поведение.В конце концов, это похоже на хорошо продуманное аварийное поведение для предотвращения конфликтов пространства имен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...