9부, URLLoader를 모방하여 파일 읽기
최종 코드를 먼저 살펴보세요
function readFile(){ urlloader = new LURLLoader(); urlloader.addEventListener(LEvent.COMPLETE,readFileOk); urlloader.load("../file/test.txt","text"); } function readFileOk(){ mytxt.text = urlloader.data; }
기본적으로 Actionscript를 모방합니다.
효과와 코드는 여기를 보세요. 효과가 보이지 않으면 HTML5를 지원하는 브라우저를 다운로드하세요
http://fsanguo.comoj.com/html5/jstoas09/ index.html
구현 과정에 대해 이야기해보자
사실 JavaScript의 ActiveXObject는 로컬 파일을 읽고 쓸 수 있지만 브라우저의 보안 수준을 가장 낮게 설정해야 합니다. 하지만 우리가 하는 일은 게임과 웹페이지가 온라인에 게시되어야 하며 모든 사용자에게 그렇게 하도록 요구할 수 있는 방법은 없습니다.
여기서는 PHP를 사용하여 서버에 있는 파일을 자유롭게 읽을 수 있습니다.
PHP로 파일을 읽는 것은 매우 간단합니다. 다음은 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 경로가 해당 위치를 가리키도록 설정합니다. 넣어두세요
php를 호출하는 javascript는 물론 복잡하지 않으니 직접 작성하셔도 되지만 저는 워낙 게으른 사람이라 jQuery를 이용해서 직접 호출해봅니다. 제이쿼리란 무엇인가요? 따로 설명할 필요는 없을 것 같습니다.
LURLLoader의 구조는 LLoader와 기본적으로 동일하며, 로드 방식만 다릅니다. 다음은 LURLLoader 클래스를 호출하는 전체 코드입니다.
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; }
위의 코드를 참조하세요. ActionScript를 모방하여 html5 작성하기 - Part 9, URLLoader 읽기를 모방하기 파일 내용 얻기 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!