【问题标题】:Embed unknown file formats嵌入未知文件格式
【发布时间】:2011-04-24 05:06:05
【问题描述】:

使用 Embed 标签,我们不仅可以在 swf 文件中嵌入 swf 或 jpg 等,还可以嵌入不支持的文件格式,例如:

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

公共静态 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()

【问题讨论】:

  • 如果您不使用“as”强制转换(X as ByteArray)而是使用普通的显式强制转换,您将立即收到错误消息。所以你应该写“ByteArray(X)”而不是“X as ByteArray”。如果转换失败,它不会将结果转换为 null。
  • 此外,您的错误发生在 onCompleteHandler 中,那么这里的 null 是什么?也许可以使用调试器逐步完成。

标签: actionscript-3 flex4 flash-cs4


【解决方案1】:

是的,只需实例化 MyZip 并转换为 ByteArray。

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

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

【讨论】:

  • 你能检查我对主要问题的更新吗,我按照你说的做了,但仍然出错。
  • 你检查过 zip 的值吗?它是一个字节数组吗?如果是这样,那么问题就得到了回答,看起来你有一个不同的问题。看起来问题出在 FZip 上。尝试在 onCompleteHandler 方法中追踪 image 变量,看看它是否是你的 null。但你真的应该为此问另一个问题。
  • 好的,我发现问题是我给出了错误的路径来查找 zip 中的图像!!我更正了路径,使用了您所说的代码,现在可以工作了,谢谢!
猜你喜欢
  • 2021-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多