用仿ActionScript的文法來編寫html5——第九篇,仿URLLoader讀取檔案

來源:互聯網
上載者:User

標籤:讀取文本   複雜   tar   exist   構造   lsp   let   服務   path   

第九篇,仿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可以自由讀取伺服器上的檔案,它並不依賴使用者的瀏覽器的設定

用php讀取檔案很簡單,一個fopen函數就可以搞定,下面是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 urlloadervar 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讀取文字檔完成了

用仿ActionScript的文法來編寫html5——第九篇,仿URLLoader讀取檔案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.