ActionScript 3 AS3 - 来自URL的缓存图像
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ActionScript 3 AS3 - 来自URL的缓存图像相关的知识,希望对你有一定的参考价值。
package components
{
import com.adobe.crypto.MD5;
import flash.events.Event;
import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;
import spark.components.Image;
public class CachedImage extends Image
{
private var _imageIdentifier:String = "";
private var urlLoader:URLLoader = new URLLoader();
private var _fromCache:Boolean = false;
public function CachedImage()
{
super();
}
public function get fromCache():Boolean
{
return _fromCache;
}
public function set fromCache(value:Boolean):void
{
_fromCache = value;
}
public function get imageIdentifier():String
{
return _imageIdentifier;
}
public function set imageIdentifier(value:String):void
{
_imageIdentifier = value;
}
override public function get source():Object
{
return super.source;
}
override public function set source(value:Object):void
{
if(!_fromCache) {
if(value is Class){
// do nothing
} else if(value is String || value is Object){
//Load cached image
_imageIdentifier = MD5.hash(String(value));
// Cache the image
var cacheFile:File= File.applicationStorageDirectory.resolvePath(_imageIdentifier);
if (cacheFile.exists) {
trace("ImageCache - Load Cached image from : "+cacheFile.url);
_fromCache = true;
super.source = cacheFile.url;
return;
} else {
trace("ImageCache - Cached image not found, create it");
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
urlLoader.load(new URLRequest(String(value)));
urlLoader.addEventListener(Event.COMPLETE,imageLoaded);
return;
}
}
}
trace("ImageCache - Load image from : "+value);
super.source = value;
}
// when remote image is loaded, cache it !
protected function imageLoaded(event:Event):void {
var tilefile:File = File.applicationStorageDirectory.resolvePath(_imageIdentifier);
if (tilefile.exists) {
trace("ImageCache - Already exist, recreate it");
tilefile.deleteFile();
}
trace("ImageCache - Cache image");
var fileStream:FileStream = new FileStream();
fileStream.open(tilefile, FileMode.WRITE);
fileStream.writeBytes(urlLoader.data);
fileStream.close();
_fromCache = true;
super.source = tilefile.url;
}
}
}
以上是关于ActionScript 3 AS3 - 来自URL的缓存图像的主要内容,如果未能解决你的问题,请参考以下文章
ActionScript 3 AS3 SWFtrospection(as3swf)
ActionScript 3 AS3 TextField和StyleSheet示例(在ActionScript中创建)
[ActionScript 3.0] AS3.0 水面波纹效果
ActionScript 3 AS3:使用SWFObject2和AS3传递变量
ActionScript 3 克隆数组(AS3)
ActionScript 3 AS3序列化