2010-10-12 52 views
1

使用嵌入標籤,我們可以在SWF文件不僅SWF的或JPG文件等,同時也支持的文件格式,如嵌入:嵌入未知文件格式

Embed[(source="mzip.zip", mimeType="application/octet-stream")]

public static MyZip:Class;

當我實例這樣一類,是什麼我得到的物體類型?是否有可能從這個類中獲得一個ByteArray?

當我這樣做: package { import flash.utils.ByteArray;

public final class Resource {  
    [Embed(source="p2.zip", mimeType="application/octet-stream")] 
    public static const MyZip:Class; 

    public static function getByteArrayFromZip():ByteArray { 
     var zip:ByteArray = new MyZip as ByteArray; 
     return zip; 
    } 
} 

}

public class Main extends Sprite {
private var ship:Bitmap; private var lib:FZipLibrary;

public function Main() {    
     lib = new FZipLibrary();  
     lib.formatAsBitmapData(".jpg");  
     lib.addEventListener(Event.COMPLETE,onCompleteHandler); 

     var fzip:FZip = new FZip(); 
     fzip.loadBytes(Resource.getByteArrayFromZip()); 
     lib.addZip(fzip); 
    } 

    private function onCompleteHandler(evt:Event) { 
     var image:BitmapData = lib.getBitmapData("assets/graphics/scratchers/myimg.jpg"); 
     trace("Size: " + image.width + "x" + image.height); 
     var sa0img0:Bitmap = new Bitmap(image); 
     addChild(sa0img0); 
    } 
} 

}

的我得到以下錯誤: TypeError: Error #1009: Cannot access a property or method of a null object reference. at Main/onCompleteHandler() at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at deng.fzip::FZipLibrary/processNext() at deng.fzip::FZipLibrary/loaderCompleteHandler()

+0

如果您不使用「as」cast(X作爲ByteArray),而是使用正常的顯式轉換,您將立即得到錯誤。因此,不應將「X as ByteArray」寫成「ByteArray(X)」。如果轉換失敗,它不會將結果轉換爲空值。 – 2010-10-12 14:10:42

+0

此外,你的錯誤發生在onCompleteHandler,那麼什麼是null?也許用調試器來完成它。 – 2010-10-12 14:12:22

回答

5

是的,只是實例MyZip和投爲ByteArray。

Embed[(source="mzip.zip", mimeType="application/octet-stream")] 
public static var MyZip:Class; 

var zip:ByteArray = new MyZip() as ByteArray; 
+0

你能否在主要問題上檢查我的更新,我按照你的說法做了,但仍然出現錯誤。 – 2010-10-12 12:57:15

+0

你檢查過zip的價值嗎?它是一個ByteArray嗎?如果是這樣,那麼問題就會得到解答,而且看起來您有不同的問題。看起來問題在於FZip。嘗試在onCompleteHandler方法中追蹤圖像變量,看看它是否爲null。但是你應該爲此提出另一個問題。 – Joony 2010-10-12 13:15:36

+0

好吧,我發現問題,我給了一個錯誤的路徑找到zip內的圖像!我糾正了路徑,使用代碼,因爲你告訴和現在的作品,謝謝! – 2010-10-12 13:24:52