我有一个 Flash 应用程序,它有两件事 1.浏览新的图像组件 2.构建滚动图像库组件-只有 10 个最近上传的图像
如何在用户浏览时保存新图像并将其存储在本地,然后在以后的会话中再次使用它(从保存的位置加载图像并在用户下次访问时再次构建滚动条)
请帮助我知道如何在本地保存图像,然后再使用它,更像是一个历史应用程序
我有一个 Flash 应用程序,它有两件事 1.浏览新的图像组件 2.构建滚动图像库组件-只有 10 个最近上传的图像
如何在用户浏览时保存新图像并将其存储在本地,然后在以后的会话中再次使用它(从保存的位置加载图像并在用户下次访问时再次构建滚动条)
请帮助我知道如何在本地保存图像,然后再使用它,更像是一个历史应用程序
干得好 :
这段代码将图像保存在共享对象中,并在您重新启动时恢复它们。
package{
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.FileFilter;
import flash.net.FileReference;
import flash.net.SharedObject;
import flash.text.TextField;
import flash.utils.ByteArray;
[SWF(width="100",height="800")]
public class TestSO extends Sprite{
private var _soFileIndex : SharedObject = SharedObject.getLocal("fileIndex");
private var _addBtn : Sprite = new Sprite;
private var _fr : FileReference = new FileReference;
public function TestSO(){
// Add a button
var tf : TextField = new TextField;
tf.text = "Add image";
tf.width = 100;
tf.height = 20;
tf.selectable = false;
_addBtn.addChild(tf);
_addBtn.graphics.beginFill(0xDDDDDD);
_addBtn.graphics.drawRect(0,0,_addBtn.width, _addBtn.height);
_addBtn.graphics.endFill();
addChild(_addBtn);
// If file index is empty
if(!_soFileIndex.data.index)
_soFileIndex.data.index = [];
else{
// Display stored images
for each(var fileName : String in _soFileIndex.data.index)
displayImage(fileName, SharedObject.getLocal(fileName).data.bytes)
}
// Listeners
_addBtn.addEventListener(MouseEvent.CLICK, onAddClick);
_fr.addEventListener(Event.SELECT, onFileSelected);
_fr.addEventListener(Event.COMPLETE, onFileLoaded);
}
// Ask for a file
private function onAddClick(e : Event) : void{
_fr.browse([new FileFilter("Images", "*.jpg;*.jpeg;*.png")]);
}
// open file
private function onFileSelected(e : Event) : void{
_fr.load();
}
// save file
private function onFileLoaded(e : Event) : void{
var fileName : String = _fr.name.split(" ").join("_");
// Save a reference to filename
if(_soFileIndex.data.index.indexOf(fileName) == -1)
_soFileIndex.data.index.push(fileName);
else return;
var fileSo : SharedObject = SharedObject.getLocal(fileName);
fileSo.data.bytes = _fr.data;
fileSo.flush();
displayImage(fileName, _fr.data);
}
// Display an image
private function displayImage(name : String, data : ByteArray):void{
var item : Sprite = new Sprite;
// Load image
var imgLoader : Loader = new Loader;
imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,onImageLoaded);
imgLoader.loadBytes(data);
item.addChild(imgLoader);
var label : TextField = new TextField;
label.text = name;
label.y = 100;
label.height = 20;
item.addChild(label);
item.y = height;
addChild(item);
}
// Resize image when loaded
private function onImageLoaded(e : Event) : void{
e.target.content.width = e.target.content.height = 100;
e.target.removeEventListener(Event.COMPLETE,onImageLoaded);
}
}
}