• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > html5游戏开发-零基础开发RPG游戏-开源讲座(一)

html5游戏开发-零基础开发RPG游戏-开源讲座(一)

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-03

本文主要包含HTML5教程,HTML5中国,html5游戏开发-零基础开发RPG游戏-开源讲座(一),admin,html5资料,h等相关知识,匿名希望在学习及工作中可以帮助到您
本篇将以零基础的视点,来讲解如何开发一款RPG游戏。

在游戏的世界里,我们可以看到各种地图,各种游戏人物,看到人物在地图上行走,对话等,无论是地图还是人物,其实都是图片的处理与显示,把不同的图片显示到屏幕上,我们就看到不同的游戏界面,要想让这些图片同时显示到界面上,我们就需要处理好层次,让他们来分层显示,我们可以想象,如果游戏人物显示在地图的下层的话,显然会被地图遮挡住。
一款RPG游戏,我简单把它分为地图层,人物层,效果层(一些法术效果等),对话层,控制层(按钮菜单等)。

如下图





我们只要依次将图片画在屏幕上,游戏人物将站在地图上,如果有对话,对话将出现在人物和地图的上面,而按钮等控件会出现在游戏的最外层

下面,我们一步步来实现一个简单的RPG游戏的开发



准备工作

一,库件下载

本游戏开发,需要用到开源库件:LegendForHtml5Programming

请到这里下载最新版的LegendForHtml5Programming,本次开发需要1.2版以上

http://code.google.com/p/legendforhtml5programming/downloads/list

库件的开发过程请看这里


http://bbs.html5cn.org/thread-2712-1-1.html

二,库件配置

首先建立一个文件夹rpg(你也可以起其他的名字)


然后将下载的库件解压,解压后将legend文件夹放到与rpg文件夹同目录
然后,在rpg文件夹里建一个index.html文件和一个js文件夹,在js文件夹里建一个Main.js文件

最后,在index.html里加入下面的代码



  • rpg





  • 复制代码
    当然,你也可以将legend文件夹放到其他地方,但是你需要修改legend文件夹下的legend.js文件中的LEGEND_PATH的值,来配置库件的路径

    游戏地图的实现

    接下来,我们先来画最底层的地图层,

    地图当然就是是由图片来组成的,如何在画面上显示一张图片,我之前已经写过专门的文章,代码如下
  • function main(){
  • loader = new LLoader();
  • loader.addEventListener(LEvent.COMPLETE,loadBitmapdata);
  • loader.load("map.jpg","bitmapData");
  • }
  • function loadBitmapdata(event){
  • var bitmapdata = new LBitmapData(loader.content);
  • var bitmap = new LBitmap(bitmapdata);
  • addChild(bitmap);
  • }
  • 复制代码
    如果想更详细了解的话,看下面的帖子

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

    http://bbs.html5cn.org/thread-2700-1-1.html

    游戏中的地图可以是一张比较大的图片,即整个图片就是游戏的地图,当人物或者地图移动的时候,改变图片显示的区域范围,从而实现地图的滚动和显示等,这样的话,必须为每个场景准备一张地图。

    另外,地图也可以是由许多小的地图块儿来组成,比如,我们熟悉的《吞食天地》,《勇者斗恶龙》等经典小型rpg游戏,这样的地图,我们需要准备一张或几张地图块儿,把这些地图块组合成地图来显示,比如下图

    0_13238754463fxE.gif


    在地图显示的时候,首先把图片切割,然后在根据预先设定好的位置显示到地图层上,这样我们就看到了一张完整的地图了

    接下来,打开Main.js

    在里面加入
    在legendForHtml5Progarmming中,用init这个函数来初始化canvas,上面的代码表示,初始化一个速度为50,名字为mylegend,大小为480*320的游戏界面,初始化完成后调用main(),这个速度值是说每个多少毫秒游戏循环一次,所以这个值设定的越小,游戏运行的速度就越快

    因为要调用main方法,所以我们要写一个main方法,main方法里做一些简单的准备工作。

    虽说读取图片只需要一个
    但是游戏中往往用到很多张图片,你可以用到哪一张再加载哪一张,也可以一次性全部加载完,然后再开始显示游戏

    为了一次性把图片加载完,我的做法是,将需要的图片放到一个数组里,然后设定一个索引,每加载一个图片,让这个索引加1,当这个索引小于数组的长度,则继续加载,直到将数组中的图片全部加载完,然后开始进行下一步的工作

    具体实现看下面的代码
  • var imgData = new Array();
  • //读取完的图片数组
  • var imglist = {};

  • function main(){
  • //准备读取图片
  • imgData.push({name:"map",path:"./image/map.jpg"});
  • imgData.push({name:"mingren",path:"./image/mingren.png"});
  • imgData.push({name:"e1",path:"./image/e1.png"});
  • imgData.push({name:"e2",path:"./image/e2.png"});
  • //实例化进度条层
  • loadingLayer = new LSprite();
  • loadingLayer.graphics.drawRect(1,"black",[50, 200, 200, 20],true,"#ffffff");
  • addChild(loadingLayer);
  • //开始读取图片
  • loadImage();
  • }
  • function loadImage(){
  • //图片全部读取完成,开始初始化游戏
  • if(loadIndex >= imgData.length){
  • removeChild(loadingLayer);
  • legendLoadOver();
  • gameInit();
  • return;
  • }
  • //开始读取图片
  • loader = new LLoader();
  • loader.addEventListener(LEvent.COMPLETE,loadComplete);
  • loader.load(imgData[loadIndex].path,"bitmapData");
  • }
  • function loadComplete(event){
  • //进度条显示
  • loadingLayer.graphics.clear();
  • loadingLayer.graphics.drawRect(1,"black",[50, 200, 200, 20],true,"#ffffff");
  • loadingLayer.graphics.drawRect(1,"black",[50, 203, 200*(loadIndex/imgData.length), 14],true,"#000000");
  • //储存图片数据
  • imglist[imgData[loadIndex].name] = loader.content;
  • //读取下一张图片
  • loadIndex++;
  • loadImage();
  • }
  • 复制代码
    上面的代码不难明白,当图片没有读取完之前,会不断循环loadImage和loadComplete两个方法,当读取完之后,移除进度条,用legendLoadOver告诉游戏已经读取完成,然后调用gameInit方法,进行游戏的初始化工作。

    看gameInit方法
  • //游戏层显示初始化
  • layerInit();
  • //添加地图
  • addMap();
  • //添加人物
  • addChara();
  • }
  • 复制代码
    在gameInit方法中,首先进行游戏层的初始化,然后添加游戏地图,然后添加人物

    游戏层显示初始化,按照我们一开始所说,我们一次来初始化地图层,人物层,效果层,对话层,控制层
  • function layerInit(){
  • //游戏底层添加
  • backLayer = new LSprite();
  • addChild(backLayer);
  • //地图层添加
  • mapLayer = new LSprite();
  • backLayer.addChild(mapLayer);
  • //人物层添加
  • charaLayer = new LSprite();
  • backLayer.addChild(charaLayer);
  • //效果层添加
  • effectLayer = new LSprite();
  • 您可能想查找下面的文章:

    • 一款利用html5和css3动画排列人物头像的实例演示
    • html5教程调用绘图api画简单的圆形代码分享
    • html5教程画矩形代码分享
    • html5教程制作简单画板代码分享
    • html5基础教程常用技巧整理
    • html5教程-Canvas入门
    • html5教程画矩形代码分享
    • HTML5晃动DeviceMotionEvent事件
    • HTML5教程之html 5 本地数据库(Web Sql Database)
    • HTML5中对contenteditable属性的解释与规定

    相关文章

    • 2018-12-03HTML5学习笔记简明版(9):变化的元素和属性
    • 2017-08-06用html5的canvas和JavaScript创建一个绘图程序的简单实例
    • 2018-12-03HTML5的新特性(1) _html5教程技巧
    • 2017-08-06利用纯html5绘制出来的一款非常漂亮的时钟
    • 2018-12-03H5怎么实现文件断点续传
    • 2017-08-06HTML5之tabindex属性全面解析
    • 2018-12-03有关window.postMessage的文章推荐6篇
    • 2018-12-03有关HTML5开发的文章推荐10篇
    • 2018-12-03HTML5实践-使用CSS3 Media Queries实现响应式设计的代码分享
    • 2018-12-03HTML5页面调起APP功能的方法试验

    文章分类

    • html/xhtml
    • html5
    • CSS
    • XML/XSLT
    • Dreamweaver教程
    • Frontpage教程
    • 心得技巧
    • bootstrap
    • vue
    • AngularJS
    • HBuilder教程
    • css3
    • 浏览器兼容
    • div/css
    • 网页编辑器
    • axure

    最近更新的内容

      • html5声频audio和视频video等新特性详细说明
      • 微信的H5页面调用第三方位置导航
      • HTML5每日一练之mark标签的应用
      • Html5无刷新修改browser Url的方法_html5教程技巧
      • 有关history.pushState()的课程推荐
      • 小强的HTML5移动开发之路(45)——汇率计算器【1】
      • canvas的绘图api使用详解
      • 如何利用canvas实现按住鼠标移动绘制出轨迹
      • 弹性盒模型 flex box的认知与使用
      • 关于HTML5 Canvas旋转动画的2个例子

    关于我们 - 联系我们 - 免责声明 - 网站地图

    ©2020-2025 All Rights Reserved. linkedu.com 版权所有