`
hzy3774
  • 浏览: 985024 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

lufylegend开发HTML5学习

 
阅读更多

    使用lufylegend制作HTML5 Canvas游戏,不但语法简单,开发迅速,还提供了很好的文档和示例,并且可以配合Box2dWeb制作物理游戏,所以很适合学习。

github地址:https://github.com/lufylegend/lufylegend.js

CSDN博客:http://blog.csdn.net/lufy_legend

HTML代码基本结构:

<!DOCTYPE HTML>
<html>
<head>
	<meta charset="utf-8" />
	<script type="text/javascript" src="lib/lufylegend-1.8.3.min.js"></script> 
	<script type="text/javascript" src="lib/Box2dWeb-2.1.a.3.min.js"></script> 
</head>
<body>
<div id="mylegend">loading...</div>
<script type="text/javascript">
var loader;  
init(50,"mylegend",500,350,main);	//初始化游戏,游戏加载后调用main
function main(){		

}   
</script>
</body>
</html>

 加载图片并对图片操作:

var loader;  
init(50,"mylegend",500,350,main);	//初始化游戏,游戏加载后调用main
function main(){		
	loader = new LLoader();  
	loader.addEventListener(LEvent.COMPLETE,loadBitmapdata);  //注册监听,
	loader.load("png.png","bitmapData");  //读取文件
}  
function loadBitmapdata(event){  
	//var bitmapdata = new LBitmapData(loader.content);  
	var bitmapdata = new LBitmapData(loader.content,0,0,100,100);

	var bitmap = new LBitmap(bitmapdata);  //用来将LBitmapData对象里的Image显示到页面上
	bitmap.x = 50;	//图片摆放位置
	bitmap.y = 50; 
	bitmap.rotate = 60;//图片旋转60度
	bitmap.alpha = 0.4;//图片透明度设置为0.4
	addChild(bitmap);  //将可显示的对象(LSprite,LBitmap等)加入到游戏最底层画板上

	var fps = new FPS();
	addChild(fps);
} 

 使用精灵操作图片:

var loader;  
init(50,"mylegend",500,350,main);	//初始化游戏,游戏加载后调用main
function main(){		
	loader = new LLoader();  
	loader.addEventListener(LEvent.COMPLETE,loadBitmapdata);  //注册监听,
	loader.load("hello.jpg","bitmapData");  //读取文件
}  
function loadBitmapdata(event){  
	var bitmapdata = new LBitmapData(loader.content,0,0,100,100);

	var bitmap = new LBitmap(bitmapdata);  //用来将LBitmapData对象里的Image显示到页面上
	/*bitmap.x = 50;	//图片摆放位置
	bitmap.y = 50; 
	bitmap.rotate = 90;//图片自身旋转60度
	bitmap.alpha = 0.4;//图片透明度设置为0.4
	addChild(bitmap);  //将可显示的对象(LSprite,LBitmap等)加入到游戏最底层画板上*/

	var sprite = new LSprite();
	sprite.x = 50;	//图片摆放位置
	sprite.y = 50; 
	sprite.rotate = 60;//图片以左上角为原点旋转60度
	sprite.alpha = 0.5;//图片透明度设置为0.4
	sprite.addChild(bitmap);
	addChild(sprite);  //将可显示的对象(LSprite,LBitmap等)加入到游戏最底层画板上

	var fps = new FPS();
	addChild(fps);
}

 基本图形绘制:

var loader;  
init(50,"mylegend",640,480,main);	//初始化游戏,游戏加载后调用main
function main(){		
	graphics = new LGraphics();
	addChild(graphics);
	graphics.drawLine(2,'#ff0000',[10,10,100,100]); //画线:线宽,颜色,坐标
	//画圆弧:线宽/颜色/[圆心坐标/半径/起始角/跨过角度/是否顺时针]/是否填充/填充颜色
	graphics.drawArc(2,'#ff0000',[200,60,50,90*Math.PI/180,180*Math.PI/180,true],true,'#00ff00');
	//画矩形:线宽/颜色/[起始坐标/矩形宽高]/是否填充/填充颜色
	graphics.drawRect(2,'#ff0000',[300,10,50,50],true,'#ffff00');
	//画圆角矩形,多一个圆角半径参数
	graphics.drawRoundRect(2,'#ff0000',[400,10,50,50,10],true,'#ffff00');
	//画多边形:线宽/颜色/[[],[],[]...(坐标集,至少三个)]/是否填充/填充颜色
	graphics.drawVertices(2,'#ff0000',[[10,110],[10,210],[50,170],[50,150]],true,'#00ff00');
}

 使用原生canvas绘图

var loader;  
init(50,"mylegend",640,480,main);	//初始化游戏,游戏加载后调用main
function main(){		
	graphics = new LGraphics();
	addChild(graphics);
	//使用原生canvas绘图
	graphics.add(function(coodx,coody){
		LGlobal.canvas.strokeStyle = "#000000";
		LGlobal.canvas.moveTo(20,20);
		LGlobal.canvas.lineTo(200,200);
		LGlobal.canvas.stroke();
	});
} 

 使用Sprite的graphic绘图:

var loader;  
init(50,"mylegend",640,480,main);	//初始化游戏,游戏加载后调用main
function main(){  
   var layer = new LSprite();
   addChild(layer);
   layer.graphics.drawRect(1,'#000000',[50,50,100,100]);
   layer.graphics.drawRect(1,'#000000',[170,50,100,100],true,'#cccccc');
}

 beginBitmapFill使用位图填充绘图区:

var loader;  
init(50,"mylegend",640,480,main);	//初始化游戏,游戏加载后调用main
function main(){  
    loader = new LLoader();  
    loader.addEventListener(LEvent.COMPLETE,loadBitmapdata);  
    loader.load("hello.jpg","bitmapData");  
}  
function loadBitmapdata(event){  
	var bitmapdata = new LBitmapData(loader.content);  
	var backLayer = new LSprite();
	addChild(backLayer);
	backLayer.graphics.beginBitmapFill(bitmapdata);
	//backLayer.graphics.drawArc(1,"#000",[110,80,50,0,Math.PI*2]);
	backLayer.graphics.drawRect(1,"#000",[80,50,70,100]);
}

 鼠标事件响应:

init(50,"mylegend",300,300,main);
var field;
function main(){  
   var layer = new LSprite();
   layer.graphics.drawRect(1,'#cccccc',[0,0,300,300],true,'#cccccc');
   addChild(layer);
   field = new LTextField();
   field.text = "Wait Click!";
   layer.addChild(field);
   layer.addEventListener(LMouseEvent.MOUSE_DOWN,downshow);
   layer.addEventListener(LMouseEvent.MOUSE_UP,upshow);
}  
function downshow(event){
	field.text = "Mouse Down!";
}
function upshow(event){
	field.text = "Mouse Up!";
}

 键盘按键事件响应:

init(50,"mylegend",300,300,main);
var field;
function main(){  
	var layer = new LSprite();
	layer.graphics.drawRect(1,'#cccccc',[0,0,300,300],true,'#cccccc');
	addChild(layer);
	field = new LTextField();
	field.text = "Wait Click!";
	layer.addChild(field);
	LEvent.addEventListener(LGlobal.window,LKeyboardEvent.KEY_DOWN,downshow);
	LEvent.addEventListener(LGlobal.window,LKeyboardEvent.KEY_UP,upshow);
}  
function downshow(event){
	field.text = event.keyCode + " Down!";
}
function upshow(event){
	field.text = event.keyCode + " Up!";
}

 copy实例代码。

Box2d碰撞检测部分:

var loader;  
init(15,"mylegend",640,480,main);	//初始化游戏,游戏加载后调用main
var backLayer,cLayer;
function main(){	
	LGlobal.setDebug(true);	//打开调试模式,才能看到图形
	backLayer = new LSprite();	
	addChild(backLayer);	//加入背景层

	LGlobal.box2d = new LBox2d();//创建Box2d对象
	cLayer = new LSprite();	
	cLayer.x = 300;		//指定坐标
	cLayer.y = 390;
	backLayer.addChild(cLayer);
	//addBodyPolygon参数:宽/高/是否动态(0不动)/密度/摩擦/弹性
	cLayer.addBodyPolygon(600,10,0,5,0.4,0.7); //创建矩形当作地板
	
	cLayer = new LSprite();	
	cLayer.x = 300;		//指定坐标
	cLayer.y = 100;
	backLayer.addChild(cLayer);
	cLayer.addBodyPolygon(30,20,1,5,0.4,0.5);	//创建矩形
	cLayer.addBodyCircle(10,20,5,1,5,0.4,0.9);	//创建圆
}

 效果如图:

 

 为图形添加纹理图片:

init(10,"mylegend",800,400,main);

var backLayer,cLayer,bitmap;
var imglist = {};
var imgData = new Array(
		{name:"face",path:"./hello.jpg"},
		{name:"face1",path:"./hello1.jpg"}
		);
function main(){	
	LGlobal.setDebug(true);	
	backLayer = new LSprite();	
	backLayer.graphics.drawRect(0,"#000000",[0, 0, 600, 400],false);
	addChild(backLayer);	
	LLoadManage.load(imgData,null,gameInit);
}

function gameInit(result){
	imglist = result;	//加载完的图片资源
	
	LGlobal.box2d = new LBox2d();
	cLayer = new LSprite();
	cLayer.x = 300;
	cLayer.y = 390;
	backLayer.addChild(cLayer);
	cLayer.addBodyPolygon(400,10,0,5,0.4,0.2);//画出地板
	
	cLayer = new LSprite();
	cLayer.x = 300;
	cLayer.y = 100;
	backLayer.addChild(cLayer);
	bitmap = new LBitmap(new LBitmapData(imglist["face"],50,50,100,120));
	cLayer.addChild(bitmap);
	cLayer.addBodyPolygon(100,120,1,5,0.4,0.6);//画一个矩形

	cLayer = new LSprite();
	cLayer.x = 310;
	cLayer.y = 20;
	backLayer.addChild(cLayer);
	bitmap = new LBitmapData(imglist["face1"],100,50,190,190);
	cLayer.graphics.beginBitmapFill(bitmap);
	cLayer.graphics.drawArc(1,"#000000",[50,50,50,0,2*Math.PI],true);
	cLayer.addChild(bitmap);
	cLayer.addBodyCircle(50,0,0,1,5,0.4,0.9);//画一个圆
}

 

 效果:



 

使用自带资源加载进度条:

init(50,"mylegend",800,400,main);
function main(){
	backLayer = new LSprite();	
	addChild(backLayer);
	loadingLayer = new LoadingSample1();//使用第一种加载动画,1.8.3中有5种
	backLayer.addChild(loadingLayer);	//将Loading动画加入精灵
	loadingLayer.setProgress(35);	//设置进度为35%
}

 

 一般使用方法:

init(50,"mylegend",800,400,main);

var loadingLayer,
backLayer;

var imglist = {};
var imgData = new Array(//图片数组
		{name:"title",path:"../images/title.png"},//所有图片名字和文件名
		{name:"shitou",path:"../images/shitou.png"},
		{name:"jiandao",path:"../images/jiandao.png"},
		{name:"bu",path:"../images/bu.png"});

function main(){
	backLayer = new LSprite();	
	addChild(backLayer);
	loadingLayer = new LoadingSample1();//使用第一种加载动画,1.8.3中有5种
	backLayer.addChild(loadingLayer);	//将Loading动画加入精灵

	LLoadManage.load(
		imgData,		//加载图片资源
		function(progress){		//显示加载进度
			loadingLayer.setProgress(progress);
		},
		function(result){	//加载完成后
			imglist = result;
			backLayer.removeChild(loadingLayer);//将加载动画层移除
			loadingLayer = null;
			gameInit();		//初始化游戏
		}
	);
}

function gameInit(){
	//在这里开始游戏
}

 这样确保所有图片加载完毕。

  • 大小: 116.4 KB
  • 大小: 376.4 KB
  • 大小: 11.1 KB
分享到:
评论

相关推荐

    基于H5canvas游戏引擎lufylegend开发小游戏合集

    在这个小游戏合集项目中,您将利用LufyLegend引擎开发多个经典的HTML5小游戏,如贪吃蛇、打砖块、俄罗斯方块等。这些游戏不仅有趣好玩,而且能够让您熟练掌握使用LufyLegend引擎进行游戏开发的流程和技巧。 项目的主要...

    lufylegend是一个HTML5开源引擎

    lufylegend是一个HTML5开源引擎, 它实现了利用仿ActionScript3.0的语法进行HTML5的开发,包含了LSprite,LBitmapData,LBitmap,LLoader,LURLLoader,LTextField,LEvent等多个AS开发人员熟悉的类。

    基于lufylegend.js开发的HTML5小游戏.zip

    基于lufylegend.js开发的HTML5小游戏.zip

    lufylegend-1.6.1

    lufylegend是一个HTML5开源引擎,它实现了利用仿ActionScript3.0的语法进行HTML5的开发, 包含了LSprite,LBitmapData,LBitmap,LLoader,LURLLoader,LTextField,LEvent等多个AS开发人员熟悉的类, 支持Google ...

    html5开源游戏引擎-lufylegend-1.7.7.zip

    HTML5 游戏源代码特辑,包括了捕鱼达人、植物僵尸、Solarmax、俄罗斯方块、扫雷、切水果、超级玛丽、三国杀、驴子跳、太空战舰、坦克大战等 之一

    HTML5 Canvas游戏开发实战.pdf

    《HTML5 Canvas游戏开发实战》主要讲解使用HTML5 Canvas来开发和设计各类常见游戏的思路和技巧,在介绍HTML5 Canvas相关特性的同时,还通过游戏开发实例深入剖析了其内在原理,让读者不仅知其然,而且知其所以然。...

    lufylegend-1.10.1.simple.min.js

    lufylegend是一个HTML5开源引擎,它实现了利用仿ActionScript3.0的语法进行HTML5的开发, 包含了LSprite,LBitmapData,LBitmap,LLoader,LURLLoader,LTextField,LEvent等多个AS开发人员熟悉的类, 支持Google ...

    html5翻块游戏 蓝色拼图代码实现 源码 lufylegend.js实现

    最近有朋友反应代码不整洁,我又重新整理一下,这是用lufylegend编写的html5小游戏.

    lufylegend_api

    lufylegend框架,用于网页游戏开发

    HTML5 Canvas 游戏开发实战PDF+源码

    lufy_legend(张路斌)的书《HTML5 canvas游戏开发实战》的PDF文档+实战示例代码。js的开发版本是lufylegend-1.5.1.js。

    HTML5+lufylegend实现游戏中的卷轴

    lufylegend是一个HTML5开源引擎,它实现了利用仿ActionScript3.0的语法进行HTML5的开发, 包含了LSprite,LBitmapData,LBitmap,LLoader,LURLLoader,LTextField,LEvent等多个AS开发人员熟悉的类, 支持Google ...

    lufylegend-1.7.3

    这是款很好用的HTML5游戏引擎,给大家推荐一下

    lufylegend.js-lufylegend-1.10.1 .zip

    lufy框架最新版本

    HTML5 canvas开发的石头剪刀布小游戏

    HTML5 canvas开发的石头剪刀布小游戏,使用开源的lufylegend框架。

    lufylegend-1.8.8

    ufylegend是一个HTML5开源引擎, 它实现了利用仿ActionScript3.0的语法进行HTML5的开发,包含了LSprite,LBitmapData,LBitmap,LLoader,LURLLoader,LTextField,LEvent等多个AS开发人员熟悉的类, 支持Google ...

    HTML5开发包和一些简单的例子

    lufylegend.js是HTML5官方资源包,希望能对于开发HTML5具有一定的帮助

    lufylegend.js-lufylegend-1.9.9

    lufylegend文件+帮助文档

Global site tag (gtag.js) - Google Analytics