Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 本地存储图像,以便在flash应用程序中再次使用_Actionscript 3_Flash_Air_Local Storage - Fatal编程技术网

Actionscript 3 本地存储图像,以便在flash应用程序中再次使用

Actionscript 3 本地存储图像,以便在flash应用程序中再次使用,actionscript-3,flash,air,local-storage,Actionscript 3,Flash,Air,Local Storage,我有一个flash应用程序,它有两个方面 1.浏览新的图像组件 2.构建滚动图像库组件-只有10张最近上传的图像 如何将新图像保存为用户浏览时的图像,并将其存储在本地,然后在以后的会话中再次使用(从保存的位置加载图像,并在用户下次访问时再次构建滚动条) 请帮助我了解如何在本地保存图像,然后在以后重新使用,更像是一个历史应用程序 这段代码将图像保存在共享对象中,并在重新启动时还原它们 package{ import flash.display.Loader; import flas

我有一个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);
        }
    }
}

给你:

这段代码将图像保存在共享对象中,并在重新启动时还原它们

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


更好的解决方案之一可能是使用内部带有ByteArray的共享对象,其中包含下载的图像,这样您就可以在共享对象加载时解析它们并创建滚动条。但是,如果您需要将图像准确地保存为单独的文件,则需要使用FileReference类。更好的解决方案之一可能是使用包含ByteArray的共享对象,其中包含下载的图像,这样您就可以在共享对象加载时解析它们并创建滚动条。但是,如果需要将图像准确地保存为单独的文件,则需要使用FileReference类。