flash on 2013-2-25
...
@author umhr
♥0 |
Line 179 |
Modified 2013-02-25 21:54:54 |
MIT License
archived:2017-03-20 11:12:48
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;
//}
}