Ajax Adobe Air call flex functions.

归去

Ajax Based Adobe Air Application 中所能使用的Api是非常上的,只能flex中使用部分flash开头的包,所以为了获取更多的功能,我们可以通过引入swf文件的形式来实现。

  • 写一段flex代码

function encodePNG 可以用来完成我们的任务。保存成 Utility.as 。

package { import flash.utils.ByteArray; import flash.display.BitmapData;
import flash.display.Sprite; import mx.graphics.codec.PNGEncoder;

public class EncoderUtility extends Sprite
{
    public static function encodePNG( bitmapData:BitmapData ):ByteArray
    {            
        var encoder:PNGEncoder = new PNGEncoder();
        var png:ByteArray = encoder.encode( bitmapData );
        return png;
    }        
}

}

  • 编译成 swf 文件

需要使用官方提供的编译工具amxmlc,你可以在flex的安装目录中找到它

/Applications/Adobe Flash Builder 4/sdks/4.0.0/bin

执行下边的命令,可以获得生成的 swf 文件 Utility.swf 。

/path/to/amxmlc Utility.as

  • 引用 swf 文件 在Ajax的程序中的html里,引入下面的代码

  • 使用 Utility.encodePNG 在 javascript 中调用

var outFile, outStream, data, width, height;

width = 64; height = 64;

data = new air.BitmapData(width, height);

// … set pixels to data

outFile = air.File.applicationStorageDirectory; outFile = outFile.resolvePath(“bmd.png”);

outStream = new air.FileStream(); // open output file stream in WRITE mode outStream.open(outFile, air.FileMode.WRITE); // write out the file outStream.writeBytes(data, 0, data.length); // close it outStream.close();