flash on 2013-2-25

by umhr
...

@author umhr
♥0 | Line 179 | Modified 2013-02-25 21:54:54 | MIT License
play

ActionScript3 source code

/**
 * Copyright umhr ( http://wonderfl.net/user/umhr )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/Anjf
 */

package 

{

    import flash.display.Sprite;

    import flash.events.Event;

    

    /**

     * ...

     * @author umhr

     */

    public class WonderflMain extends Sprite 

    {

        

        public function WonderflMain():void 

        {

            if (stage) init();

            else addEventListener(Event.ADDED_TO_STAGE, init);

        }

        

        private function init(e:Event = null):void 

        {

            removeEventListener(Event.ADDED_TO_STAGE, init);

            // entry point

            

            addChild(new Canvas());

        }

        

    }

    

}





    

    import com.bit101.components.Label;

    import com.bit101.components.PushButton;

    import com.bit101.components.Style;

    import com.bit101.components.Text;

    import com.bit101.components.TextArea;

    import flash.display.Sprite;

    import flash.events.Event;

    import flash.net.FileReference;

    import flash.text.TextFormat;

    /**

     * ...

     * @author umhr

     */

    class Canvas extends Sprite 

    {

        

        public function Canvas() 

        {

            init();

        }

        private function init():void 

        {

            if (stage) onInit();

            else addEventListener(Event.ADDED_TO_STAGE, onInit);

        }

        

        private var _loadButton:PushButton;

        private var _dataManager:DataManager = DataManager.getInstance();

        private function onInit(event:Event = null):void 

        {

            removeEventListener(Event.ADDED_TO_STAGE, onInit);

            // entry point

            

            addLoadButton();

            

        }

        

        private function addLoadButton():void 

        {

            _loadButton = new PushButton(this, int((stage.stageWidth - 200) * 0.5), 4, "ATNDのentryファイルのロード", onLoad);

            _loadButton.width = 200;

        }

        

        private function onLoad(event:Event):void 

        {

            _loadButton.visible = false;

            

            _dataManager.addEventListener(Event.COMPLETE, dataManager_complete);

            _dataManager.load();

        }

        

        private function dataManager_complete(event:Event):void 

        {

            Style.embedFonts = false;

            Style.fontName = "_ゴシック";

            Style.fontSize = 10;

            

            addTextArea();

            addSaveButton();

            

        }

        

        private function addTextArea():void 

        {

            var textArea:TextArea = new TextArea(this, 4, 28, _dataManager.text);

            textArea.width = stage.stageWidth - 8;

            textArea.height = stage.stageHeight - 28 - 24 -8;

        }

        

        private function addSaveButton():void 

        {

            new PushButton(this, int((stage.stageWidth-200)*0.5), (stage.stageHeight-24), "tab切りCSVファイルでセーブ", onPush).width = 200;

        }

        

        private function onPush(event:Event):void 

        {

            var fileReference:FileReference = new FileReference();

            fileReference.save(_dataManager.text, "tabFormattedEntry.csv");

            

        }

        

    }

    



    import flash.events.Event;

    import flash.events.EventDispatcher;

    import flash.net.URLLoader;

    import flash.net.URLRequest;

    import flash.utils.ByteArray;

    /**

     * ...

     * @author umhr

     */

    class DataManager extends EventDispatcher

    {

        private static var _instance:DataManager;

        public function DataManager(block:Block){init();};

        public static function getInstance():DataManager{

            if ( _instance == null ) {_instance = new DataManager(new Block());};

            return _instance;

        }

        

        private var _dataList:Vector.<Vector.<String>> = new Vector.<Vector.<String>>();

        private function init():void

        {

        }

        

        private var _loadFile:LoadFile = new LoadFile();

        public function load():void 

        {

            _loadFile.addEventListener(Event.COMPLETE, loadFile_complete);

            _loadFile.Start();

        }

        

        private function loadFile_complete(event:Event):void 

        {

            var csv:String = _loadFile.text;

            parseCSV(csv);

        }

        

        private function parseCSV(csv:String):void{

            

            var lineList:Array = csv.split('"\n');

            var n:int = lineList.length;

            for (var i:int = 0; i < n; i++) 

            {

                var str:String = lineList[i];

                str = str.substr(1, str.length);

                var lineStrList:Array = str.split('","');

                var m:int = lineStrList.length;

                for (var j:int = 0; j < m; j++) 

                {

                    lineStrList[j] = (lineStrList[j] as String).replace(/\r\n/g, " ");

                }

                

                var data:Vector.<String> = Vector.<String>(lineStrList);

                _dataList.push(data);

            }

            

            dispatchEvent(new Event(Event.COMPLETE));

            

        }

        

        public function get dataList():Vector.<Vector.<String>> {

            return _dataList;

        }

        

        /**

         * tab切テキストにして返します。

         */

        public function get text():String {

            var result:String = "";

            var n:int = _dataList.length;

            for (var i:int = 0; i < n; i++) 

            {

                var m:int = _dataList[i].length;

                for (var j:int = 0; j < m; j++) 

                {

                    result += _dataList[i][j];

                    if (j != m - 1) {

                        result += "\t";

                    }

                }

                result += "\n";

            }

            

            return result;

        }

        

    }

    



class Block { };





    import flash.events.Event;

    import flash.events.EventDispatcher;

    import flash.net.FileReference;

    import flash.utils.ByteArray;

    class LoadFile extends EventDispatcher{

        private var _fileReference:FileReference;

        /**

         * 開始

         */

        public function Start(typeFilter:Array = null):void

        {

            if(_fileReference){

                return;

            }

            _fileReference = new FileReference();

            _fileReference.browse(typeFilter);

            _fileReference.addEventListener(Event.SELECT, atSelect);

        }

        

        public var content:*;

        public var byteArray:ByteArray;

        public var text:String;

        

        /**

         * ファイルの選択が完了すると動く

         * @param event

         *

         */

        private function atSelect(event:Event):void{

            _fileReference.removeEventListener(Event.SELECT, atSelect);

            _fileReference.addEventListener(Event.COMPLETE, atFileComplete);

            _fileReference.load();

        }

        /**

         * 選択したファイルを読み込み完了すると動く

         * @param event

         *

         */

        private function atFileComplete(event:Event):void{

            _fileReference.removeEventListener(Event.COMPLETE, atFileComplete);

            

            byteArray = event.target.data as ByteArray;

            text = byteArray.readUTFBytes(byteArray.length);

            dispatchEvent(event);

            _fileReference = null;

            

            //var loader:Loader = new Loader();

            //var byteArray:ByteArray = event.target.data as ByteArray;

            //loader.contentLoaderInfo.addEventListener(Event.COMPLETE, atBytesComplete);

            //loader.loadBytes(byteArray, new LoaderContext());

        }

        

        /**

         * 読み込んだファイルのバイトアレイを変換完了で動く

         * @param event

         *

         */

        //private function atBytesComplete(event:Event):void {

            //event.target.removeEventListener(Event.COMPLETE, atBytesComplete);

            //content = event.target.content;

            //dispatchEvent(event);

            //_fileReference = null;

        //}

    }