開発環境 Apache Flex SDK 4.13.0
FlashDevelop 4.7.1.1
実行環境 Microsoft Windows 8.1 (64bit)
プロジェクトの種類 ActionScript 3/AS3 Project
プロジェクト名 js2flash4

Project/Properties
Output
Background color #6495ED


Main.as
package
{
	import flash.display.*;
	import flash.events.*;
	import flash.external.*;
	import flash.text.*;
	import flash.utils.*;
 
	public class Main extends Sprite 
	{
		private var tf:TextField;
 
		public function Main() 
		{
			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
 
			tf = new TextField;
			tf.defaultTextFormat = new TextFormat(null, 20, 0xffffff);
			tf.autoSize = TextFieldAutoSize.LEFT;
			tf.text = "ready";
			addChild(tf);
 
			ExternalInterface.addCallback("display", display);
		}
 
		private function display(base16:String):void 
		{
			var stream:ByteArray = ByteArrayFromBase16(base16);
			var str:String = "";
			str += stream.length.toString() + "\n";
			var max:int = Math.min(stream.length, 16);
			for (var i:int = 0; i < max; i++) 
			{
				var b:int = stream[i];
				str += b.toString(16) + " ";
			}
			tf.text = str;
		}
 
		private function ByteArrayFromBase16(base16:String):ByteArray
		{
			var dic:Array = [];
			dic["0"] = 0x0; dic["1"] = 0x1; dic["2"] = 0x2; dic["3"] = 0x3;
			dic["4"] = 0x4; dic["5"] = 0x5; dic["6"] = 0x6; dic["7"] = 0x7;
			dic["8"] = 0x8; dic["9"] = 0x9; dic["A"] = 0xA; dic["B"] = 0xB;
			dic["C"] = 0xC; dic["D"] = 0xD; dic["E"] = 0xE; dic["F"] = 0xF;
 
			var stream:ByteArray = new ByteArray;
			for (var i:int = 0; i < base16.length; i += 2) 
			{
				stream.writeByte(dic[base16.charAt(i)] << 4 | dic[base16.charAt(i + 1)]);
			}
			return stream;
		}
 
	}
 
}
 

js2flash4.html
<!doctype html>
<head>
<title>js2flash4</title>
<script>
 
function onDragOver(event)
{
	event.preventDefault();
}
 
function onDrop(event)
{
	event.preventDefault();
 
	var files = event.dataTransfer.files;
	var file = files[0];
 
	var reader = new FileReader();
	reader.onload = onLoad;
	reader.readAsArrayBuffer(file);
}
 
function onLoad(event)
{
	var buf = event.target.result;
	var str = Base16FromArrayBuffer(buf);
	js2flash4.display(str);
}
 
function upload()
{
	js2flash4.display("30410D0A");
}
 
function Base16FromArrayBuffer(buf)
{
	var dic = ["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"];
	var base16 = "";
	var bin = new Uint8Array(buf);
	for (var i = 0; i < bin.length; i++) {
		var b = bin[i];
		base16 += dic[b >> 4] + dic[b & 0x0f];
	}
	return base16;
}
 
</script>
</head>
 
<body>
<div ondragover="onDragOver(event)" ondrop="onDrop(event)">
<embed src="js2flash4.swf" id="js2flash4" width=800 height=600 />
</div>
<button onclick="upload()">upload</button>
</body>
 
最終更新:2015年02月06日 22:23