第九篇,仿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 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读取文本文件完成了

用仿ActionScript的语法来编写html5——第九篇,仿URLLoader读取文件的更多相关文章

  1. 用仿ActionScript的语法来编写html5——终篇,LegendForHtml5Programming1.0开源库件

    一,LegendForHtml5Programming1.0库件是什么?它是一个javascript库,它模仿了ActionScript的语法,用于html5的开发,目前实现的功能相对较少,还不能称之 ...

  2. 用仿ActionScript的语法来编写html5——第二篇,利用Sprite来实现动画

    上一篇,我已经模仿as,加入了LBitmap和LBitmapData类,并且用它们实现了静态图片的显示.这次用Sprite来动态显示图片.依然遵循上一篇对显示对象的处理的思路,添加LSprite类,并 ...

  3. 用仿ActionScript的语法来编写html5——第一篇,显示一张图片

    第一篇,显示一张图片 一,代码对比 as代码: public var loader:Loader; public function loadimg():void{ loader = new Loade ...

  4. 用仿ActionScript的语法来编写html5——第八篇,图片处理+粒子效果

    用仿ActionScript的语法来编写html5系列开发到现在,应该可以做出一些东西了,下面先来研究下图片的各种效果预览各种效果看下图效果和代码看这里,看不到效果的请下载支持html5的浏览器 ht ...

  5. 用仿ActionScript的语法来编写html5——第五篇,Graphics绘图

    用仿ActionScript的语法来编写html5——第五篇,Graphics绘图 canvas本身就是一个Graphics,可以直接进行绘图在actionscript里面,每个Sprite都有一个G ...

  6. 用仿ActionScript的语法来编写html5——第六篇,TextField与输入框

    一,对比1,html5中首先看看在html5的canvas中的文字显示 var canvas = document.getElementById("myCanvas"); var ...

  7. 用仿ActionScript的语法来编写html5——第三篇,鼠标事件与游戏人物移动

    第三篇,鼠标事件与游戏人物移动 一,假设假设,所有可添加鼠标事件的对象,都有一个mouseEvent方法,添加的鼠标事件同过这个mouseEvent来调用.这样的话,添加鼠标事件,其实只需要给canv ...

  8. 用仿ActionScript的语法来编写html5——第七篇,自定义按钮

    第七篇,自定义按钮这次弄个简单点的,自定义按钮.其实,有了前面所定义的LSprite,LBitmap等类,定义按钮就很方便了.下面是添加按钮的代码, function gameInit(event){ ...

  9. 用仿ActionScript的语法来编写html5——第四篇,继承与简单的rpg

    第四篇,继承与简单的rpg 这次用继承自LSprite的类来实现简单的rpg的demo先看一下最后的代码与as的相似度 var backLayer; //地图 var mapimg; //人物 var ...

随机推荐

  1. HDU 2795 Billboard(线段树的另类应用)

    Billboard Time Limit: 20000/8000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  2. css样式重置方案 -解决浏览器差异

    1.http://meyerweb.com/eric/tools/css/reset/ /* http://meyerweb.com/eric/tools/css/reset/ v2.0 | 2011 ...

  3. ptmalloc2源码解析初探

    本文是徽沪一郞在学习华庭(庄明强)所撰<glibc内存管理-ptmalloc2源代码分析>的阅读笔记.本笔记以slides的方式加以呈现.文件采用latex+tikz编辑而成,如果对lat ...

  4. php 递归创建目录、递归删除非空目录、迭代创建目录

    递归创建目录 方法一 function mk_dir($path){ if(is_dir($path)){ //参数本身是一个目录 return true; } if(is_dir(dirname($ ...

  5. 常用Ubuntu 命令

    sudo apt-get updatesudo apt-get upgrade以下2選1sudo apt-get install ubuntu-desktop如果你只想安装必要的桌面管理软件而不想安装 ...

  6. 做bbs论坛项目的收获(1)

    1. 当两张表出现关联的时候,关联的外键,千万不能是汉字,千万不能使汉字,因为这个问题,直接导致项目进行不下去..... 顺便记录一下知识点(一) 当用frameset设置网页的结构的时候 eg: & ...

  7. 一些需要被禁用的php危险函数

    phpinfo() 功能描述:输出 PHP 环境信息以及相关的模块、WEB 环境等信息。 危险等级:中 passthru() 功能描述:允许执行一个外部程序并回显输出,类似于 exec()。 危险等级 ...

  8. PHP关闭提示、打印配置

    打印配置 PHP.exe -i > Info.txt 关闭 PHP 提示的方法 搜索php.ini: error_reporting = E_ALL 改为: error_reporting = ...

  9. http://d3js.org/

    http://d3js.org/ http://www.ourd3js.com/wordpress/?p=51 http://www.ourd3js.com/wordpress/?p=104file: ...

  10. 【Java 基础篇】【第九课】继承

    继承就是为了提高代码的复用率. 利用继承,我们可以避免代码的重复.让Woman类继承自Human类,Woman类就自动拥有了Human类中所有public成员的功能.我们用extends关键字表示继承 ...