h5游戏开发_H5游戏开发利器之Lufylegend

Lufylegend是一种基于html5的开源游戏引擎,它还内置了Box2dWeb,采用javascript语言编写,用户通过在网页中引用相关的Lufylegend.js文件就可以很方便的利用这个游戏引擎编写自己的网页游戏。

推荐大家可以参考作者出版的《HTML5 Canvas游戏开发实战》一书,非常适合零基础小白阅读学习。

本篇文章将带给大家对Lufylegend.js基础内容的大致了解,配合卯月引擎制作开发游戏则可很便利快速的使用,无需特意记忆书写繁杂的类。

第一章图层

层,是一种很很抽象的概念,如在游戏中有地图、人物、对话框等。实际上它们都是显示在层的上面。也正是因为有了层的概念,则可以帮助游戏开发者建立很清晰的逻辑思路。

通俗的讲,就是把不同的图片放入不同的层内,它们就会按照先后的顺序显示对象的内容。

bd4676ea70adab8f701ff974e8571bfa.png

                                              层的示意图

LGraphics对象绘图类

如果,只是单独添加一个层或者多个层,很简单。

var background= new LSprite();

addChild(background)

虽然,成功添加了一个层,但是,这样是什么也看不到的,所以应运而生出了LGraphics绘图类,它可以清晰明了的看出每个背景层的颜色,以及给层添加图片、形状。

LGraphics是lufylegend库件中的绘图类,可以配合层的这种概念使用。

1、如何使用绘图类形状显示图层背景颜色

drawRect()是矩形形状,它的内置参数是边框线、边框颜色、矩形的数组,包括坐标、长宽。填充、填充颜色。

addChild(thickenss,lineColor,pointArray,isfill,color)

init(50,'mn',500,500,main);function main(){//创建图层var background_a = new LSprite();var background_b = new LSprite();//添加图层addChild(background_a);//绘制矩形background_a.graphics.drawRect(1,'#000',[50,50,500,500],true,'#000');background_b.graphics.drawRect(1,'#0BF206',[150,150,200,200],true,'#0BF206');//将B层显示在A层内background_a.addChild(background_b)}

9a99e5a318c8a3a002b4b4fce472c4da.png

                                            图1-0代码示意图

2、如何使用绘图类形状显示图层背景图片

若想实现在层背景上显示图片,需要两个步骤。如下:

  • 1.载入背景图事件

  • 2.保存和读取图片

init(50,'mn',500,500,main);var background;function main(){background = new LLoader;//显示背景图片的事件background.addEventListener(LEvent.COMPLETE,game);//载入背景图片background.load('img/background_1.jpg','bitmapData');}function game(event){//此时bitmap就是图片的变量var bitmap = new LBitmapData(background.content);loader = new LSprite();addChild(loader);//将背景图片加载到矩形形状内loader.graphics.beginBitmapFill(bitmap);loader.graphics.drawRect(1,'#000',[0,0,500,500]);}

c2b5138c1ba3a582e5deb6408a2a44f8.png

                                       图1-1代码示意图

LGraphics对象绘图类结语:除了矩形,它还有圆形、多边形以及将图片扭曲形状,使用方法和矩形没有太多的区别,在此不一一枚举。

第二章图像

第一章节介绍了层的概念,以及如何使用绘图类。你会发现一个问题,游戏不仅仅只有一幅图片,它还有人物、UI等等图片。

1.如何存储多张图片

LLoadManage静态类,可以一次性存储多张图片。

LLoadManage.load(需要读取图片数组,读取数组图片后需要调用的函数,可以为空,读取完后调用的函数);

2.如何显示多张图片

LBitmap对象不但可以将图片显示到画板上,它还具备控制图片的属性。

LBitmap(坐标,透明度,旋转,缩放);

init(50,"mn",960,540,main);var backLayer;var imglist = {};//创建图片存储数组var imgData = new Array({name:"background_1",path:"img/background_1.jpg"},{name:"npc",path:"img/npc.png"});function main(){backLayer = new LSprite();addChild(backLayer);//存储图片LLoadManage.load(imgData,null,game);}function game(result){imglist = result;cLayer_1 = new LSprite();backLayer.addChild(cLayer_1);//读取名叫background_1的图片bitmap = new LBitmap(new LBitmapData(imglist["background_1"],0,0,960,540));cLayer_1.addChild(bitmap);cLayer_2 = new LSprite();cLayer_1.addChild(cLayer_2);//读取名叫npc的图片bitmap = new LBitmap(new LBitmapData(imglist["npc"],0,0,284,540));//使图片名叫npc图旋转60度bitmap.rotate = 60;cLayer_2.addChild(bitmap);}

e58ce63c7621cb8a597f094c8e6ff330.png

                                         图2-1代码示意图

3、Box2d

如果你搞明白了上面的代码,再来玩一个有意思的东西,它是Box2d拟2D刚体物体的引擎。

  • 3.1矩形物体

  • box2d初始化

    LBox2d()

  • 打开debug模式

    LGlobal.setDebug(true)

  • 创建Box2d矩形物体

    addBodyPolygon(宽,高,静态/动态,密度,摩擦力,弹力);

init(50,"mn",960,540,main);var backLayer,cLayer;function main(){LGlobal.setDebug(true);backLayer = new LSprite();addChild(backLayer);//添加一个静态矩形物体LGlobal.box2d = new LBox2d();cLayer = new LSprite();cLayer.x = 300;cLayer.y = 390;backLayer.addChild(cLayer);cLayer.addBodyPolygon(600,10,0,5,0.4,0.2);//添加一个动态矩形物体cLayer = new LSprite();cLayer.x = 300;cLayer.y = 100;backLayer.addChild(cLayer);cLayer.addBodyPolygon(100,60,1,5,0.4,0.2);}

482a72705063f15d718056dcd7f31e54.png

                                             图2-2代码示意图

看上去是不是很简单,关于如何创建层、添加层上一章节已经提过,没讲的是层它也有自己的属性。比如坐标、透明度、缩放。

  • 3.2矩形物体内添加图片

  • 还记得LGraphics绘图对象类是如何给层添加一张背景图片的吗?beginBitmapFill方法同样适用为box2d物体添加图片

    beginBitmapFill()

init(50,"mn",960,540,main);var backLayer,cLayer,bitmap;var imglist = {};var imgData = new Array({name:"background_1",path:"img/npc.png"},{name:"background_2",path:"img/npc.png"});function main(){//LGlobal.setDebug(true);LGlobal.box2d = new LBox2d();backLayer = new LSprite();backLayer.graphics.drawRect(10,"#000",[0, 0, 960, 540],false);addChild(backLayer);LLoadManage.load(imgData,null,gameInit);}function gameInit(result){imglist = result;创建静态矩形物体cLayer = new LSprite();cLayer.x = 300;cLayer.y = 390;backLayer.addChild(cLayer);cLayer.addBodyPolygon(284,10,0,5,0.4,0.2);创建第一动态矩形物体box01 = new LSprite();box01.x = 200;box01.y = 200;backLayer.addChild(box01);bitmap = new LBitmap(new LBitmapData(imglist["background_1"],50,50,284,120));box01.addChild(bitmap);box01.addBodyPolygon(100,60,1,5,0.4,0.2);创建第二动态矩形物体box02 = new LSprite();box02.x = 400;box02.y = 200;backLayer.addChild(box02);bitmap = new LBitmap(new LBitmapData(imglist["background_2"],50,50,284,120));box02.addChild(bitmap);box02.addBodyPolygon(100,60,1,5,0.4,0.2);}

1e725d795eab3490dea348aab2db892a.png

                                          图2-3代码示意图

仔细阅读2-3代码,实际上就是给层添加了背景图片而已。

本章结语:box2d创建物体同样也有圆形、多边形,使用方法与矩形相同,不一一举例。关于box2d拖拽、关节更加简单,请参考教程的制作工具。

第三章文本

文本内容和图像一样是必不可少的,Lufylegend让文字显示变的更加容易。

  • 1、如何调用文本框

    text = new LTextField();

  • 2、如何创建文本内容

    text.text = '你好,媚娘网';

  • 3、如何改变字体大小

    text.size = 100;

  • 4、如何改变字体颜色

    text.color = #0080FF;

  • 5、如何改变字体坐标

    text.x = 50;

    text.y = 50;

init(50,"mn",960,540,main);function main(){background = new LSprite();addChild(background);text = new LTextField();text.text = '你好,媚娘网';text.color = "#0080FF";text.x = 50;text.y = 50;text.size = 100;background.addChild(text);}

e49ff73acfb1f1e9cc76ce4043e0beac.png

                                                图3-1代码示意图

尾声

末尾还是要提一句,对于游戏只有图像、文本还是远远不够的,它还需要事件、以及游戏核心算法。算法已经超出了本篇文章普及范围了,在这里不谈。但是可以简单说一下Lufylegend的各类事件,当然,事件也很重要。

  • 1、键盘事件监听

    LEvent.addEventListener(LGlobal.window,LKeyboardEvent.KEY_UP,up);

    LEvent.addEventListener(LGlobal.window,LKeyboardEvent.KEY_DOWN,down);

  • 2、鼠标事件监听

    addEventListener(LMouseEvent.MOUSE_DOWN,downshow);

    addEventListener(LMouseEvent.MOUSE_UP,upshow);

  • 3、循环事件监听

    addEventListener(LEvent.ENTER_FRAME,onframe);

为第三章文本3-1代码添加键盘事件监听的效果。当按下键盘W键和松开W按键改变文本内容,显示不同的文字内容。

init(50,"mn",960,540,main);var text,background;function main(){background = new LSprite();addChild(background);text = new LTextField();text.text = '你好,媚娘网';text.color = "#0080FF";text.x = 50;text.y = 50;text.size = 100;background.addChild(text);LEvent.addEventListener(LGlobal.window,LKeyboardEvent.KEY_UP,up);LEvent.addEventListener(LGlobal.window,LKeyboardEvent.KEY_DOWN,down);}function up(event){if (event.keyCode == 87){text.text = '我是键盘按下事件';text.size = 50;}}function down(event){if (event.keyCode == 87){text.text = '我是键盘弹起事件';text.size = 50;}}

37708b3a897724654506e7a834803fdc.png

总结:卯月引擎的开发就是为了使Lufylegend.js更加简单,对于本篇文章理解后,你只需使用卯月引擎轻轻松松点几下就可以快速的创建H5游戏。

8893a789abd43acb0537fa247d7f3c46.png

卯月引擎-网页2d游戏制作工具下载请点击原文链接。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值