2009-06-17 72 views
2

OK,在flash中編譯swc用於flex,用flex編寫的類

聽起來很複雜,但事實並非如此。這裏是: 我想使用一些資產(按鈕等),我在Flash動畫項目中創建。由於我的所有資產都低於10K,因此我不打算加載swf,等待其加載並創建界面。我想使用一個SWC,並只需要我需要的剪輯實例。另外,我想讓我的Button類擁有一些額外的屬性,這就是問題發生的地方。

如果在Flash IDE的鏈接屬性中添加對自定義Button類的引用並跟蹤Button MovieClip的子節點,我會得到正確的跟蹤。如果我在Flex的Main類中使用生成的swc文件創建Button並跟蹤Button MovieClip的同一個子元素,那麼我會得到null。

這是爲什麼?無論如何要解決這個問題嗎?我已經考慮過使用Flex組件工具包,但由於我正在處理一個簡單的動作項目,並且我沒有使用Flex框架,所以在這一點上我沒有看到使用組件工具包的意圖。

謝謝!

回答

3

我想我明白了。

我的按鈕MovieClip鏈接到Flex actionscript項目中其餘ActionScript腳本代碼所在的同一個src文件夾中的類。 (as3類路徑設置爲「../」,從.fla文件所在的資源文件夾中,一級到src)

當編譯Flash時,找到類並找到了.swc文件。這就是爲什麼我從閃存中獲得符號的原因。 當Flex編譯時,該類在src目錄中找到,因此編譯了同一類的新版本,儘管它已經存在於swc文件中。由於flex找到.as文件,但不知道我是否將它鏈接到了Flash IDE中的一個符號(我認爲它不能這樣做),Flex創建了它的版本,但由於沒有鏈接符號對於那個班級,Button I的孩子正在追蹤的是null。

我想使用包並保持Fla鏈接類的分離,所以Flex不會編譯同一個類兩次。

奇怪的是我沒有得到任何警告或錯誤,所以我認爲一切都很好。

一個快速且不太髒的解決方法是從文件系統中刪除物理Button類,以便Flash可以在編譯時生成它的版本並且引用Button元件的子元素。然後在Flex中創建一個擴展Button的類並添加我需要的代碼。由於生成的類是在.swc文件中編譯的,因此Flex可以看到這一點,而且我沒有擴展問題。

就是這樣!鮑勃你是舅舅!

我假設發生了什麼,我不是100%確定。這是我的直覺通過觀察理所當然的事情,所以我可能在技術上是錯誤的。 如果有人有任何更正,他們歡迎。

2

我不確定我是否正確地閱讀了您的問題,但您是否本質上想要嵌入從一開始就可用的圖像/資產,一旦應用程序初始化就會加載圖像/資產?

如果是這種情況,請查看此鏈接。它解釋瞭如何將任何資產嵌入到動作項目中。 http://kennethsutherland.com/2009/04/21/why-flex-why-actionscript-why-flash/

希望這是你以後的事情。

+0

是。你說對了。我想要嵌入一些資產以避免加載。感謝這篇文章。這很方便,但是這種情況(在Flash中將項目'編譯'爲flex)稍微與我的相反(編譯flash中的swc以用於flex)。現在,我對編譯flash中的swc再思考一下,並考慮使用swf中的[Embed]標記。儘管如此,我還是認爲你可以將MovieClip鏈接到一個外部類,將其封裝在一個swc中並在flex中使用它。這是一個我不認爲會遇到的問題,我很好奇這個解決方案。 – 2009-06-17 08:53:08

+0

我會壓下(我不是一個flash CS3的人),直到閃存IDE生成的SWC內實際包含的內容。當我爲一個flash項目創建我的AS3項目時,我們的一位設計師解釋說他們沒有使用Embed(它不是flash的一部分),而是將任何資產放到舞臺上以確保它們從一開始就在那裏,但他們不能用腳本「嵌入」它們。所以我正在壓制你的SWC包含代碼,但不包括資產。嘗試反編譯SWC(使用winzip打開獲取swf),然後使用decomiler打開swf http://www.flash-decompiler.com/ – kenneth 2009-06-17 09:45:38