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();