ActionScriptの構文をまねてhtml 5を書く——第九編、URLLoaderをまねてファイルを読み取る


第九篇,仿URLLoader読取ファイル
まず最後のコードを見てみましょう
function readFile(){
	urlloader = new LURLLoader();
	urlloader.addEventListener(LEvent.COMPLETE,readFileOk);
	urlloader.load("../file/test.txt","text");
}
function readFileOk(){
	mytxt.text = urlloader.data;
}

基本的にActionscriptの模倣が実現されています.
効果とコードはここを見て、効果のが見えないのはhtml 5のブラウザを支持することをダウンロードして下さい
http://fsanguo.comoj.com/html5/jstoas09/index.html
実装プロセスについては、javascriptのActiveXObjectはローカルファイルの読み書きを実現できますが、ブラウザのセキュリティレベルを最小限に設定する必要がありますが、私たちがやっているゲームやWebページはネット上に置く必要があります.私たちはすべてのユーザーにこのように要求することはできません.
ここではphpでこのプロセスを実現し、phpはサーバ上のファイルを自由に読み取ることができ、ユーザーのブラウザの設定に依存しません.
phpでファイルを読み取るのは簡単で、fopen関数1つでできます.次はfileです.phpのコード
if(!file_exists($_POST["file"])){
		echo "";
		exit;
	}
	$file = fopen($_POST["file"],"r");
	$filemsg = "";
	while (!feof($file)) {
		$line = fgets($file);
		$filemsg = $line;
	}
	fclose($file);
	echo $filemsg;
このphpを好きな位置に置いてlegend.js内設定パスLEGEND_FILE_PHPはあなたが置いた位置を指しています.
Javascript呼び出しphpについては、もちろん自分で書くことができます.複雑ではありませんが、私は怠け者なので、jqueryで直接呼び出しました.jqueryは何ですか.私が説明しなくてもいいでしょう.
LURLLoaderの構造については、LLoaderと基本的に同じで、loadメソッドだけが異なります.以下はLURLLoaderクラスの完全なコードで、前に準備したphpを呼び出して読み込むテキストを取得します.
function LURLLoader(){
	var self = this;
	self.objectindex = ++LGlobal.objectIndex;
	self.type="LURLLoader";
	self.loadtype = "";
	self.content = null;
	self.oncomplete = null;
	self.event = {};
}
LURLLoader.prototype = {
	addEventListener:function(type,listener){
		var self = this;
		if(type == LEvent.COMPLETE){
			self.oncomplete = listener;
		}
	},
	load:function (path,loadtype){
		var self = this;
		self.loadtype = loadtype;
		if(self.loadtype == "text"){
			$.post(LEGEND_FILE_PHP, {
				flg:"read",
				file:path
			},function(data){
				if(self.oncomplete){
					self.event.currentTarget = data;
					self.data = data;
					self.oncomplete(self.event);
				}
			});
		}
	}
}

上の例について、ボタンを追加しました.LTextFieldです.コードは下を見てください.
init(40,"mylegend",600,500,main);

var loadingLayer;
var backLayer;

var urlloader
var mytxt;
function main(){
	legendLoadOver();
	
	var readBtn = addButton("  ",20);
	readBtn.x = 10;
	readBtn.y = 20;
	addChild(readBtn);
	readBtn.addEventListener(LMouseEvent.MOUSE_DOWN, readFile);
	
	mytxt = new LTextField();
	mytxt.x = 10;
	mytxt.y = 50;
	mytxt.text = "";
	mytxt.width = 300;
	mytxt.height = 200;
	mytxt.setType(LTextFieldType.INPUT);
	addChild(mytxt);
}
function readFileOk(){
	mytxt.text = urlloader.data;
}
function readFile(){
	urlloader = new LURLLoader();
	urlloader.addEventListener(LEvent.COMPLETE,readFileOk);
	urlloader.load("../file/test.txt","text");
}
function addButton(lbl,x){
	var up = new LSprite();
	up.graphics.drawRect(1,"black",[0, 0, 80, 20],true,"#999999");
	var txt = new LTextField();
	txt.x = x;
	txt.text = lbl;
	up.addChild(txt);
	var over = new LSprite();
	over.graphics.drawRect(1,"black",[0, 0, 80, 20],true,"#cccccc");
	var txt1 = new LTextField();
	txt1.x = x;
	txt1.text = lbl;
	over.addChild(txt1);
	var btn = new LButton(up,over);
	return btn;
}

over,ActionScriptに倣ったテキストファイルの読み込みが完了しました