2010-12-06 48 views
0

我正在遷移FlashBuilder項目(實際上是我正在使用Linux上的FlexBuilder eclipse插件開發的項目)以使用FDT。我設法導入該項目,並使其意識到它依賴的其他項目。將FlashBuilder項目遷移到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 > 

話又說回來,我得到一個「能」 t解決第二個文件中的'內容'錯誤(a t讀取命名空間的內容:內容)。

事情提:

  • 我使用FDT 4.0,在Linux下,用(有效)EVAL關鍵
  • 我使用的是自定義的Flex 3.5 SDK(不是一個與FDT發貨,但不是太奇怪了一個任意)

希望能有人可以幫助...

感謝

PH

+0

的Flash Builder和FDT使用相同的Flex編譯器(Adobe的開源之一)。我通常會推薦檢查SDK /編譯器的版本,但是如果您使用的是定製的SDK,我認爲您已經完成了這個工作。我不明白你的'延期內容'屬性的解釋。 – JeffryHouser 2010-12-06 17:33:31

+0

我想我的意思是「自定義組件」,如下所述:http://livedocs.adobe.com/flex/3/html/help.html?content=intro_2.html(我添加了一個示例) – phtrivier 2010-12-06 18:09:41

回答

0

如果編譯正確,並且沒有任何編譯器警告,那麼它就是解析器中的錯誤,而不是代碼中的錯誤。請在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>