Устранить ошибку при переносе проекта FlashBuilder в FDT - PullRequest
0 голосов
/ 06 декабря 2010

Я перевожу проект FlashBuilder (фактически проект, над которым я работаю с плагином FlexBuilder для Linux) для использования FDT. Мне удалось импортировать проект и сообщить ему о других проектах, от которых он зависит.

Однако я получаю много ошибок компиляции для вещей, которые кажутся безвредными (и используются для компиляции). По крайней мере, например:

<mx:SomeClass initialize="{this.init()}" ... >
   <mx:Script>
    <![CDATA[
         ....
        public function init() : void {
          // ... whatever
        }

        public function foo(event : Event) : void {
          // .. whatever
        }
            ]]>
    </mx:Script>
    <mx:SomeOtherComponent click="{this.foo(event)}"/>
 ... etc ....

Итак, я получаю «неразрешенную функцию» для всех вызовов вида someAttribute = "{this.someFunction ()}", даже если функция описана в том же файле блока.

Это то, что я злоупотребляю AS3 / FlashBuilder все это время?

Кроме того, общие компоненты имеют проблемы. Предположим, у меня есть класс с отложенным атрибутом «содержимого», и я хочу создать экземпляр этого класса и «заполнить пробел»:

Я определяю пользовательский компонент в файле CustomComponent.mxml с отложенным содержимым

<mx:VBox>
 <mx:Script>
    <![CDATA[
      public var content : IDeferredInstance;

      public function buildMe() : void {
         this.addChild(content.getInstance() as UIComponent);
      }

Я расширяю пользовательский компонент в другом XML-файле, помещая что-то в качестве содержимого (пространство имен - это просто имя пространства имен, содержащего файл CustomComponent)

 <namespace:CustomComponent xmln:namespace="..." >
   <namespace:content >
        <!-- Whatever ... -->
   </namespace:content >
 </namespace:SomeClassWithDeferredInstance >

С другой стороны, я получаю сообщение об ошибке «Не удается разрешить содержимое» во втором файле (в строке, которая читает пространство имен: содержимое).

Что следует упомянуть:

  • Я использую FDT 4.0 под Linux с (действительным) ключом eval
  • Я использую специальный Flex 3.5 SDK (не тот, который поставляется с FDT, но и не слишком странный)

Надеясь, что кто-нибудь может помочь ...

Спасибо

PH

1 Ответ

0 голосов
/ 06 сентября 2011

Если он компилируется правильно и без каких-либо предупреждений компилятора, то это ошибка в анализаторе, а не в вашем коде. Пожалуйста, отправьте его в JIRA: http://bugs.powerflasher.com/jira/browse/FDT

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

Ваша версия FDT также может быть неверной. Вы используете 4.0, и это довольно старый (около года). С тех пор было добавлено много функций и исправлены ошибки. Для получения дополнительной информации см. Примечания к выпуску.

http://fdt.powerflasher.com/docs/FDT_4_Release_Notes

Я предлагаю перейти на FDT 4.5.X

    <s:ApplicationminWidth="955" minHeight="600" initialize="{this.init();}">
    <fx:Script>
      <![CDATA[
            private function init() : void {}
            private function foo(event : MouseEvent) : void {}
       ]]>
       </fx:Script>
       <s:Button click="this.foo(event);"/>
    </s:Application>
...