【问题标题】:Resolve error when migrating a FlashBuilder project to FDT解决将 FlashBuilder 项目迁移到 FDT 时出现的错误
【发布时间】:2010-12-06 17:20:31
【问题描述】:

我正在迁移一个 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()}" 形式的所有调用,我都会得到“未解析的函数”,即使该函数是在同一个块文件中描述的。

是因为我一直在滥用 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 >

然后,我在第二个文件(在读取命名空间:内容的行)中收到“无法解析'内容'”错误。

值得一提的:

  • 我在 Linux 下使用 FDT 4.0,带有一个(有效的)eval 密钥
  • 我正在使用自定义 Flex 3.5 SDK(不是 FDT 附带的,但也不是太奇怪)

希望任何人都可以提供帮助......

谢谢

PH

【问题讨论】:

  • Flash Builder 和 FDT 使用相同的 Flex 编译器(Adobe 的开源之一)。我通常建议检查您的 SDK/编译器的版本,但是如果您使用的是自定义 SDK,我假设您已经这样做了。我不明白您的“延迟内容”属性说明。
  • 我想我的意思是“自定义组件”,如下所述:livedocs.adobe.com/flex/3/html/help.html?content=intro_2.html(我添加了一个示例)

标签: apache-flex fdt


【解决方案1】:

如果它编译正确,并且没有任何编译器警告,那么它是解析器中的错误,而不是您的代码中的错误。请在 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>

【讨论】:

  • 感谢您的回复。在我的辩护中,我在 9 个月前发布了这个问题,所以此时 4.0 非常新鲜;)我不会很快有机会测试 FDT4.5,不过......
猜你喜欢
  • 1970-01-01
  • 2017-12-08
  • 1970-01-01
  • 1970-01-01
  • 2017-08-31
  • 1970-01-01
  • 1970-01-01
  • 2014-11-02
  • 2016-03-28
相关资源
最近更新 更多