上一篇讲的是文件的加密,这一篇记录一下如何加载并显示图片。
因为图片文件经过加密,已经成了二进制流的文件了(一堆乱码),只能使用URLStream来加载资源了。
这里有一点要注意:URLStream中的读取操作是非阻塞的,在读取数据之前必须使用bytesAvailable属性来确定是否能够获取足够的数据,如何不能获取足够的数据,将引发EOFError异常。
主要思路:
1、加载加密后的资源,使用URLStream
2、调用解密方法,获取解密后的数据
3、使用Loader类的loadBytes方法加载资源
new URLStream();
//通过需要加载的资源url,来获取实际需要加载的资源地址,如xx.png实际将请求xx.p
3:
//监听urlLoader的事件
//Event.Complete、IOErrorEvent.IO_ERROR、ProgressEvent.PROGRESS、HTTPStatusEvent.HTTP_STATUS、Event.OPEN
6:
new URLRequest(url);
8:
9: urlLoadedCount = 0;
10:
11: urlLoader.load(req);
12:
13:
14:
15:
16:
//onCompleteHandler方法中
byte:ByteArray;
int;
20:
try
22: {
23: byteLen = urlLoader.bytesAvailable;
24: }
catch(e:Error)
26: {
if (urlLoadedCount++ > 3)
28: {
return ;
30: }
31:
//reload 重新加载,直至超过3次
33:
return ;
35: }
36:
37: urlLoadedCount = 0;
38:
new ByteArray();
byte, 0, byteLen);
//对数据进行解密操作,与上一篇中的加密方法对应
byte.position = 0;
43:
//开始加载图片
new Loader();
46:
//监听Event.Complete事件
48: loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, loadImgCompleteHandler);
49:
new LoaderContext();
51: context.applicationDomain = ApplicationDomain.currentDomain;
52: context.securityDomain = SecurityDomain.currentDomain;
53:
byte, context);
55:
56:
//loadImgCompleteHandler方法
58: 此时loader.content已经为Bitmap类了,使用addChild即可完成图片的加载
59:
60:
//如果要加载的是xml、txt等文件内容,则无需此方法,使用byte.readUTFBytes(byte.bytesAvailable)便可得到解密后的字符串了
62: