Skip to main content
 Web开发网 » 编程语言 » php语言

用仿ActionScript的语法来编写html5——第九篇

2021年07月26日7340百度已收录

  本文为 兄弟连IT教育 机构官方 HTML5培训 教程,主要介绍:用仿ActionScript的语法来编写html5——第九篇,仿URLLoader读取文件

  第九篇,仿URLLoader读取文件

  先看看最后的代码

  [javascript] view plain copy

  01.function readFile(){

  02. urlloader = new LURLLoader();

  03. urlloader.addEventListener(LEvent.COMPLETE,readFileOk);

  04. urlloader.load("../file/test.txt","text");

  05.}

  06.function readFileOk(){

  07. mytxt.text = urlloader.data;

  08.}

  基本上已经实现了Actionscript的模仿了。

  效果和代码看这里,看不到效果的请下载支持HTML5的浏览器

  

  下面说说实现过程

  其实JavaScript中的ActiveXObject是可以实现本地文件的读写的,但是你的浏览器的安全级别必须设定到最低,但是我们做的游戏和网页是要放到网上的,我们没有办法要求所有的用户这样做。

  在这里,我用PHP来实现这一过程,php可以自由读取服务器上的文件,它并不依赖用户的浏览器的设定

  用php读取文件很简单,一个fopen函数就可以搞定,下面是file.php的代码

  [php] view plain copy

  01.if(!file_exists($_POST["file"])){

  02. echo "";

  03. exit;

  04. }

  05. $file = fopen($_POST["file"],"r");

  06. $filemsg = "";

  07. while (!feof($file)) {

  08. $line = fgets($file);

  09. $filemsg = $line;

  10. }

  11. fclose($file);

  12. echo $filemsg;

  把这个php放到你喜欢的位置,然后在legend.js里面设定路径LEGEND_FILE_PHP指向你放的位置

  关于javascript调用php,当然可以自己写,因为它并不算复杂,但是我是一个很懒的人,所以我直接用jQuery来调用了,jquery是什么?估计不用我解释了吧

  关于LURLLoader的构造,和LLoader基本一样,只有load方法不一样,下面是LURLLoader类的完整代码,里面调用了之前准备的php来获取要读取的文本

  [javascript] view plain copy

  01.function LURLLoader(){

  02. var self = this;

  03. self.objectindex = ++LGlobal.objectIndex;

  04. self.type="LURLLoader";

  05. self.loadtype = "";

  06. self.content = null;

  07. self.oncomplete = null;

  08. self.event = {};

  09.}

  10.LURLLoader.prototype = {

  11. addEventListener:function(type,listener){

  12. var self = this;

  13. if(type == LEvent.COMPLETE){

  14. self.oncomplete = listener;

  15. }

  16. },

  17. load:function (path,loadtype){

  18. var self = this;

  19. self.loadtype = loadtype;

  20. if(self.loadtype == "text"){

  21. $.post(LEGEND_FILE_PHP, {

  22. flg:"read",

  23. file:path

  24. },function(data){

  25. if(self.oncomplete){

  26. self.event.currentTarget = data;

  27. self.data = data;

  28. self.oncomplete(self.event);

  29. }

  30. });

  31. }

  32. }

  33.}

  关于上面的例子,我加了一个按钮,一个LTextField,代码看下面

  [javascript] view plain copy

  01.init(40,"mylegend",600,500,main);

  02.

  03.var loadingLayer;

  04.var backLayer;

  05.

  06.var urlloader

  07.var mytxt;

  08.function main(){

  09. legendLoadOver();

  10.

  11. var readBtn = addButton("读取",20);

  12. readBtn.x = 10;

  13. readBtn.y = 20;

  14. addChild(readBtn);

  15. readBtn.addEventListener(LMouseEvent.MOUSE_DOWN, readFile);

  16.

  17. mytxt = new LTextField();

  18. mytxt.x = 10;

  19. mytxt.y = 50;

  20. mytxt.text = "";

  21. mytxt.width = 300;

  22. mytxt.height = 200;

  23. mytxt.setType(LTextFieldType.INPUT);

  24. addChild(mytxt);

  25.}

  26.function readFileOk(){

  27. mytxt.text = urlloader.data;

  28.}

  29.function readFile(){

  30. urlloader = new LURLLoader();

  31. urlloader.addEventListener(LEvent.COMPLETE,readFileOk);

  32. urlloader.load("../file/test.txt","text");

  33.}

  34.function addButton(lbl,x){

  35. var up = new LSprite();

  36. up.graphics.drawRect(1,"black",[0, 0, 80, 20],true,"#999999");

  37. var txt = new LTextField();

  38. txt.x = x;

  39. txt.text = lbl;

  40. up.addChild(txt);

  41. var over = new LSprite();

  42. over.graphics.drawRect(1,"black",[0, 0, 80, 20],true,"#cccccc");

  43. var txt1 = new LTextField();

  44. txt1.x = x;

  45. txt1.text = lbl;

  46. over.addChild(txt1);

  47. var btn = new LButton(up,over);

  48. return btn;

  49.}

  over,模仿ActionScript读取文本文件完成了

评论列表暂无评论
发表评论
微信