2010-04-19 30 views
3

在Flex3中,我可以編譯純粹的as3代碼並使用「嵌入」標籤加載圖像。這是由Flex製作一個BitmapAsset類完成的。如何使用flex4嵌入純粹的as3位圖資源(使用flex3)

我仍然可以在Flex4中做到這一點。

但是,有一個技巧是假Flex3和使用我自己的mx.core.BitmapAsset類來刪除Flex的BitmapAsset帶來的一些無關的東西。這裏描述:http://www.ultrashock.com/forums/flex/embed-flex-assets-without-using-flex-123405.html

不幸的是,我無法得到這些技巧與Flex4一起工作,並獲得較小的文件大小。我最終發現錯誤「VerifyError:Error#1014:Class mx.core :: BitmapAsset could not be found。」

這個錯誤使我這個論壇,並與那裏描述的解決方案:http://tech.groups.yahoo.com/group/flexcoders/message/148762

在此之後的建議,我加-static鏈接,運行時共享庫​​=真,我的SWF文件加載沒有錯誤...但這意味着我加載了我想省略的flex框架(文件大小也如此)。

當涉及到使用Embed時,是否有更好的方式來僞裝flex4?

回答

1

我創建了一個測試項目中的Flex 4 [Embed]和假01​​,不能看到異常:

package 
{ 
import flash.display.Sprite; 
public class EmbedTest extends Sprite 
{ 
    public function EmbedTest() 
    { 
     addChild(new smile()); 
    } 

    [Embed("smile.png")] 
    private var smile:Class; 
} 
} 

嘗試添加-link-report link-report.xml編譯選項,並檢查link-report.xml文件中bin-debug

你有BitmapAsset.as嗎?如果不是,您可能已通過externs,external-library-pathload-externs將其排除。

+0

謝謝你 - 今天幾個月後返回到這個問題。我正在使用一個假的MX SWC的各種項目......原因不明......當使用flex4編譯並用於flex4項目將無法正常工作。我將這些文件自己移動到不同的項目中,一切正常。感謝您的理智檢查。非常感激。 – jedierikb 2011-03-11 23:27:58

3

會像工作?

[Embed(source="yourImage.jpg")] 
private var ImageC:Class; 
private var image = new ImageC(); 

Keith Peters在這方面有很好的article

+0

另外,它是一個動作或flex項目?也許對於flex項目,它默認使用BitmapAsset – 2010-04-20 09:27:52

+0

是的,這是在使用flex提供的命令行工具編譯as3項目時嵌入資產的技術。以這種方式嵌入的資源需要Flex框架中的一些類。我的文章中的第一個鏈接揭示了一種縮減這些類的大小的技術,從而產生更小的文件swf文件。使用flex4嵌入資產導致swf文件稍大,第一個鏈接中的舊技術不再有效。 – jedierikb 2010-04-21 00:23:26

+1

@jdierkb我不知道Joa Ebert的Reducer是否適用於flex4生成的swfs(http://blog.joa-ebert.com/2009/08/08/reducer/)。應該是像java -jar reducer.jar - 輸入old.swf - 從終端/命令提示符輸出new.swf。你將需要java 1.6,所以你應該可以在個人電腦上運行,但是在osx上,你將需要從蘋果公司的java更新,並且可能很方便在〜/ .bash_profile中導出路徑(export PATH =/System/Library/Frameworks /JavaVM.framework/Versions/1.6/Commands:$PATH)。如果這能起作用,它將是文件大小的解決方案,但不是用於mx。*問題。 – 2010-04-21 06:08:24

相關問題