Apache flex 解决将FlashBuilder项目迁移到FDT时出现的错误

Apache flex 解决将FlashBuilder项目迁移到FDT时出现的错误,apache-flex,fdt,Apache Flex,Fdt,我正在迁移一个FlashBuilder项目(实际上是一个我正在Linux上使用FlexBuilder eclipse插件的项目)以使用FDT。我设法导入了该项目,并让它知道它所依赖的其他项目 然而,对于那些看起来无害的东西(用于编译),我会遇到很多编译错误。至少,例如: <mx:SomeClass initialize="{this.init()}" ... > <mx:Script> <![CDATA[ .... p

我正在迁移一个FlashBuilder项目(实际上是一个我正在Linux上使用FlexBuilder eclipse插件的项目)以使用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()}”形式的所有调用,我都会得到“unresolved function”,即使该函数在同一块文件中描述

是因为我一直在滥用AS3/FlashBuilder吗

此外,通用组件也有问题。假设我有一个具有延迟“content”属性的类,我想实例化这个类并“填充空白”:

我在CustomComponent.mxml文件中定义了一个自定义组件,其中包含延迟的内容

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

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

我在另一个xml文件中扩展了自定义组件,将某些内容作为内容(名称空间只是包含自定义组件文件的名称空间的名称)


然后,在第二个文件中(在读取namespace:content的行中)再次出现“无法解析'content'”错误

值得一提的是:

  • 我在Linux下使用FDT4.0,带有一个(有效的)eval密钥
  • 我使用的是定制的Flex3.5SDK(不是FDT附带的,但也不是太奇怪的)
希望任何人都能帮忙

谢谢


PH

如果它编译正确,并且没有任何编译器警告,那么它是解析器中的错误,而不是代码中的错误。请在JIRA中归档:

对我来说,这段代码没有任何错误标志——我甚至可以得到快速帮助来帮助我生成代码

您的FDT版本也可能不正确。您使用的是4.0,这已经很旧了(大约一年)。从那时起,许多功能被添加,错误被修复。有关更多信息,请参阅发行说明

我建议升级到FDT4.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>


Flash Builder和FDT使用相同的Flex编译器(Adobe的开源编译器)。我通常建议您检查SDK/编译器的版本,但是如果您使用的是自定义SDK,我假设您已经这样做了。我不理解您对“延迟内容”属性的解释。我想我指的是“自定义组件”,如下所述:(我添加了一个示例)感谢您的回复。为我辩护,我在9个月前发布了这个问题,所以4.0在这个时候非常新鲜;)我不会很快有机会测试FDT4.5,不过。。。
    <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>