0

1.新しい画像コンポーネントを参照する2.スクローラー画像ギャラリーコンポーネントを構築する-最近アップロードされた10個の画像のみを持つフラッシュアプ​​リケーションがあります

ユーザーが新しい画像を参照してローカルに保存し、後でセッションで再利用するときに新しい画像を保存するにはどうすればよいですか (保存された場所から画像を読み込み、ユーザーが次にアクセスしたときにスクローラーを再度構築します)

画像をローカルに保存し、後で再利用する方法を教えてください。履歴アプリケーションのように

4

1 に答える 1

3

どうぞ :

このコードは共有オブジェクトに画像を保存し、再起動時に復元します。

結果

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);
        }
    }
}
于 2012-11-16T10:32:28.040 に答える