開発環境 |
Apache Flex SDK 4.13.0 |
|
FlashDevelop 4.7.1.1 |
実行環境 |
Microsoft Windows 8.1 (64bit) |
プロジェクトの種類 |
ActionScript 3/AS3 Project |
プロジェクト名 |
js2flash4 |
Project/Properties
Output
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