使用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(){ //在这里开始游戏 }
这样确保所有图片加载完毕。
相关推荐
这个压缩包“基于lufylegend.js开发的HTML5小游戏.zip”包含了使用该库开发的游戏项目源代码,为开发者提供了学习和参考的宝贵资源。 【描述】HTML5开发 HTML5是超文本标记语言的最新版本,它引入了许多新特性,如...
综上所述,Lufylegend 1.7.7是一个功能强大的HTML5游戏开发工具,具备跨平台、丰富的游戏模板、物理引擎、音频处理等功能,适合新手和经验丰富的开发者使用。通过深入研究其源代码,开发者不仅能创建自己的游戏,还...
Lufylegend-1.7.3版本的发布,无疑为HTML5游戏开发带来了更多可能,让我们一起深入探讨这款引擎的核心优势和应用技巧。 Lufylegend引擎是一款基于JavaScript的开源游戏框架,专为构建2D和轻量级3D游戏而设计。其...
标题中的"lufylegend.js-lufylegend-1.10.1.zip"揭示了我们即将探讨的是Lufylegend框架的最新版本1.10.1,它是一个基于JavaScript的开源库,专为HTML5游戏和应用开发设计。本文将深入剖析这个框架的核心特性、更新...
HTML5是一种强大的网页开发技术,它为创建交互式和动态网页提供了丰富的...通过分析和学习这个源码,开发者不仅可以了解HTML5游戏开发的基本流程,还能掌握Lufylegend.js的实用技巧,进一步提升自己的游戏编程能力。
本书《HTML5 Canvas游戏开发实战》由张路斌(lufy_legend)编写,深入浅出地讲解了如何利用HTML5 Canvas进行游戏开发,结合提供的源码实例,读者可以更直观地学习和理解相关技术。 1. **HTML5 Canvas基础** - ...
学习HTML5游戏开发,你需要理解HTML5的新特性,尤其是Canvas API,以及如何使用JavaScript来操纵Canvas元素。此外,了解基本的物理引擎原理和如何集成像Box2dWeb这样的库也是必要的。LufyLegend这样的框架可以帮助你...
《lufylegend游戏人物行走动画》...通过学习和实践,开发者不仅可以掌握Lufylegend引擎的基本用法,还能深入了解游戏开发中的动画设计和控制技巧,这对于任何希望在HTML5游戏领域有所建树的人来说都是一份宝贵的资源。
《lufylegend_api:构建网页游戏开发的强大框架》 在网页游戏开发的世界里,lufylegend_api 是一个不容忽视的重要工具。这个框架专为高效、便捷地创建互动式网页游戏而设计,旨在帮助开发者将游戏从概念转化为生动...
接下来,lufylegend框架是一个专门用于HTML5游戏开发的库,它简化了HTML5 Canvas的使用,提供了更加方便的游戏开发接口和组件。lufylegend包含了一系列的游戏开发工具,如场景管理、动画系统、物理引擎等,帮助...
学习和掌握lufylegend.js,开发者不仅可以提升HTML5游戏的开发效率,还能充分利用HTML5的新特性,创造出更具吸引力的网页应用。同时,深入理解HTML5的基本语法和API,如HTML元素、CSS3样式、JavaScript编程以及Web ...
LufyLegend是一个轻量级的HTML5游戏框架,提供了一套完整的2D游戏开发解决方案,包括动画处理、物理引擎、精灵图管理等。 2. **lufylegend-1.5.0 API.pdf**:这是一个文档,详细介绍了LufyLegend的API,开发者可以...
"HTML5.rar_375hk.com cn.html" 这个压缩包文件似乎包含了关于HTML5中Canvas元素编程开发的教程资源,这对于想要学习或提升HTML5 Canvas技能的开发者来说非常有价值。 Canvas是HTML5中的一个关键特性,它是一个基于...
这个游戏的源码是公开且无加密的,这意味着我们可以深入研究其内部工作原理,学习如何使用HTML5进行游戏开发。 首先,`index.html`是网页的主入口文件,它包含了网页的基本结构和元素。在HTML5中,`<canvas>`标签被...
在Android平台上,HTML5技术已经越来越受到开发者...开发者不仅可以学习到如何集成和优化Html5内容,还能掌握WebView的使用,以及Android与JavaScript的交互方式。这在当前跨平台开发的趋势下,是非常有价值的知识点。
LufyLegend是一个专门用于开发HTML5游戏的开源引擎,它提供了丰富的游戏开发工具和库,简化了开发过程。开发者可以利用LufyLegend快速构建2D游戏,包括动画处理、碰撞检测、物理引擎等功能,同时支持自定义脚本,让...
通过结合HTML5的布局、CSS3的样式控制以及Lufylegend的动画API,你可以创建出富有动态感和交互性的网页应用,而无需深入学习JQuery的复杂代码。这既是一个提升技术的好机会,也是提高网页用户体验的有效途径。
Lufylegend库(lufylegend-1.5.1.js和lufylegend-1.5.1.min.js)是一个基于HTML5的快速游戏开发框架,它简化了Canvas的使用,提供了一套完整的游戏开发解决方案,包括事件处理、动画系统、资源管理等,使得开发者...