在Adobe Air App下使用Fzip lib

时间:2010-05-04 17:33:36

标签: javascript flex actionscript-3 air zip

我目前正在为Adobe Air(1.5.3)开发一个项目,我需要解压缩一个文件,将其部分内容复制到另一个文件中。

然后我看到有人在谈论Fzip(http://codeazur.com.br/lab/fzip)lib。问题是我不知道如何使用Javascript和Adobe Air“导入”或使用此库,因为Javascript没有import指令。

我怎样设法做到这一点?

2 个答案:

答案 0 :(得分:1)

我发布了一个如何使用Adobe Air和Javascript使用FZip的演示。我希望它希望能为你解决问题。

简而言之,您需要从已编译的SWC(如果适用)中提取SWF文件并访问该类。

演示非常简单,只是一个概念验证,但您应该能够轻松扩展它。

http://www.drybydesign.com/2010/05/12/adobe-air-fzip-without-flex/

-Ari

答案 1 :(得分:1)

Ari的例子相当不错,它让我开始了,但他遗漏了一些非常重要的东西 - 比如将未压缩的文件写回磁盘。并且zip文件不必远程托管 - 关于AIR的事情就是它像本地应用程序一样运行......这是一个基于Ari给我们的良好开端的例子。 (我使用HTML5只是为了酷,时髦和现代!:) -

<!DOCTYPE HTML>
<html> 
 <head>
    <title>Test Fzip</title> 
<script type="application/x-shockwave-flash" src="scripts/fzip.swf"></script>
<script type="text/javascript" src="scripts/AIRAliases.js"></script>
<script type="text/javascript" src="scripts/AIRIntrospector.js"></script>
<script type="text/javascript" src="scripts/jquery-1.4.2.js"></script>
<script type="text/javascript">
        var fzip;
        if (window.runtime) {
            if (!fzip) 
                fzip = {};
                fzip.FZip = window.runtime.deng.fzip.FZip;
                fzip.FZipFile = window.runtime.deng.fzip.FZipFile;
        }
        var file = air.File.documentsDirectory.resolvePath("test.zip");
        //file.url
        var zip = new fzip.FZip;
        zip.addEventListener(air.Event.OPEN, onopen);
        zip.addEventListener(air.Event.COMPLETE, oncomplete);
        zip.load(new air.URLRequest(file.url.toString()));

        function oncomplete(event) {
            var count = zip.getFileCount();
                        alert(count);

            for ( var idx = 0; idx < count; idx++)
            {
                var zfile = zip.getFileAt(idx);
                // alert(zfile.filename);
                var uzfile = air.File.applicationStorageDirectory.resolvePath(zfile.filename);
                var stream = new air.FileStream();
                stream.open( uzfile, air.FileMode.WRITE );
                stream.writeBytes( zfile.content,0, zfile.content.length );
                stream.close();
            }

        }

        function onopen(event) {
            alert("file is opened");
        }
</script>
 </head> 
    <body> 


    </body> 
</html>