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

原创 2011年09月26日 21:39:43

第九篇,仿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——第七篇,自定义按钮

第七篇,自定义按钮 这次弄个简单点的,自定义按钮。 其实,有了前面所定义的LSprite,LBitmap等类,定义按钮就很方便了。 下面是添加按钮的代码, function gameI...
  • lufy_Legend
  • lufy_Legend
  • 2011年09月21日 18:41
  • 5165

vip唯品会仿页

效果: http://115.159.53.185/test/vip/html:
  • Dextrad_ihacker
  • Dextrad_ihacker
  • 2016年11月20日 15:09
  • 986

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

上一篇,我已经模仿as,加入了LBitmap和LBitmapData类,并且用它们实现了静态图片的显示。 这次用Sprite来动态显示图片。 依然遵循上一篇对显示对象的处理的思路,添加LSprit...
  • lufy_Legend
  • lufy_Legend
  • 2011年09月08日 16:25
  • 10090

HTML5+CSS+JavaScript仿百度登录之后的静态首页

这是仿百度登录后的静态页面,其中有些功能还不完善,但是我会尽量去完善他们,在这个页面里面有很多相对我来说比较难的地方,比如其中的“更多产品”,“设置”,“换肤功能”,“我的关注,推荐,导航”选项卡之间...
  • qq_32154641
  • qq_32154641
  • 2017年10月24日 10:07
  • 534

Actionscript使用Scoket方式发送HTTP请求实现

FLash在安全方面的保守让它成为了最安全和最广泛的RIA应用开发技术,但是对程序员来说那可能不会那么轻松了,比如最简单的http请求,通常会被系统拦截,所以我们需要一种再底层的方式来实现Http请求...
  • yctccg
  • yctccg
  • 2016年08月16日 10:40
  • 259

actionscript里面如何上传文件到服务端?

前言最近看回以前的浮士德增强修改版,发现以前的图片上传方式不是规范,所以这里又拿了网上的一份代码改成了可以上传文件的形式。想要浮士德头像裁剪增强版源代码的话,后面会给出来的。工具类package ea...
  • cdnight
  • cdnight
  • 2016年06月21日 18:20
  • 813

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

第四篇,继承与简单的rpg 用仿ActionScript的语法来编写html5——第一篇,显示一张图片 http://blog.csdn.net/lufy_legend/article/d...
  • lufy_Legend
  • lufy_Legend
  • 2011年09月13日 17:36
  • 5075

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

第八篇,图片处理+粒子效果用仿ActionScript的语法来编写html5系列开发到现在,应该可以做出一些东西了,下面先来研究下图片的各种效果预览各种效果看下图效果和代码看这里,看不到效果的请下载支...
  • lufy_Legend
  • lufy_Legend
  • 2011年09月21日 18:45
  • 6809

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

第三篇,鼠标事件与游戏人物移动 用仿ActionScript的语法来编写html5——第一篇,显示一张图片 http://blog.csdn.net/lufy_legend/article...
  • lufy_Legend
  • lufy_Legend
  • 2011年09月13日 11:34
  • 7623

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

用仿ActionScript的语法来编写html5——第六篇,TextField与输入框 一,对比 1,html5中 首先看看在html5的canvas中的文字显示 var canva...
  • lufy_Legend
  • lufy_Legend
  • 2011年09月16日 15:28
  • 7156
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用仿ActionScript的语法来编写html5——第九篇,仿URLLoader读取文件
举报原因:
原因补充:

(最多只允许输入30个字)