1.环境搭建

安装教程传送门:http://edn.egret.com/cn/index.php?g=&m=article&a=index&id=207&terms1_id=20&terms2_id=22

 

安装包下载:http://www.egret.com/egretengine

一键安装完成。

打开cmd验证是否完成:输入命令:egret,如安装正确的则如下图所示。

如果显示未配置环境变量,找到修复安装。点击修复安装后Egret 会帮你修复被破坏的环境变量和命令行程序。

MAC:

大体的流程与win下无大差别。

2.创建项目

WIN(Mac类似):

不懂得请戳: http://edn.egret.com/cn/index.php?g=&m=article&a=index&id=211&terms1_id=20&terms2_id=23

1.创建一个我们需要使用的项目的文件夹,比如我在F盘创建一个code文件夹。

2.使用cmd进入到code文件夹目录下,如图所示:

3.命令 egret create 项目名,创建项目。

在生成的项目文件夹中我们会看到四个子文件夹。

3.开发

1.先跑起来。

1.开发工具:WebStorm

2.编译运行:使用webstorm导入刚才创建的项目,点击左下角的Terminal,集成的cmd就可以再webstorm内使用了。

输入:egret build 项目名,就可以编译了。编译完成后,输入:egret startserver 项目名,运行项目。

如果您的目录处于当前项目目录下,可以直接使用egret build命令进行编译,使用run来运行。

然后会自动弹出网页。默认的例子如图,成功运行。

2.项目开始之前的准备

1.打开Main.ts文件,将createGameScene中的内容全部删除,并将createGameScene方法后边的所有方法删除。

2.导入自己要使用的资源,放入resource\assets下,然后在resource.json下,参照之前的模式配置一下即可。

3.开始自己的项目开发

现在,我们来做一个超级玛丽撞金币的小游戏。例子传送门:http://iamedison.sinaapp.com/

1.加载图片到场景

官方自带的例子帮忙封装好了一个方法createBitmapByName(name:string)来创建bitmap对象,直接使用会方便省事。

参数是resource.json下配置好的图片名称,直接传入即可。

创建背景来作为例子:

var bg: egret.Bitmap =this.createBitmapByName("bgImage");

this.addChild(sky);

然后我们可以设置他的宽度和高度以及x,y值来调整需要的效果:

this.stage.stageWidth 是屏幕可看见的宽度
var stageW: number = this.stage.stageWidth;
var stageH: number = this.stage.stageHeight;
sky.width = stageW;
sky.height = stageH;
sky.x = 0;
sky.y = 0;

然后把背景给弄起来,看图:


现在可以其他静态显示的图都创建出来,如图所示:


这样,我们的整个游戏界面就出来了。

2.开启主角mario的点击事件

设置对象可以点击:mario.touchEnabled=true;

注册点击事件:

mario.addEventListener( egret.TouchEvent.TOUCH_TAP, this.startAnimation, this );
参数分别是:事件类型,回调函数,还有回调的对象。事件的类型如图所示:

然后我们要让主角跳跃起来,我这边做一个模拟跳跃的效果,设置y轴来让他跳跃起来。然后我们要用到一个叫做缓动动画的东西:


egret.Tween.removeTweens(this._mario);
var tw = egret.Tween.get(this._mario,{loop:false});

缓动的效果也很多:


var easeObj = egret.Ease.sineOut;
tw.to({x:stageW / 2 - 20,y:stageH / 2 - 90},20,easeObj).wait(20)
.to({x:stageW / 2 - 20,y:stageH / 2 - 70},20,easeObj).wait(20);

上面代码做的就是y轴上移然后再下移(这边的原点是在左上角的),跳跃的效果就出来了。
然后我们可以用类似的原理来处理撞击石头出金币的效果,加上一个石头移动的缓动动画,再加上一个金币出现的缓动动画。
金币移动到点之后触发回调函数,移除金币:tw2.call(this.complete, this,[coin]);
private complete(coin:egret.Bitmap)
{
this.removeChild(coin);
coin = null;
}
来个效果图:


3.计时和分数

开启一个定时器(单位毫秒):

var timer:egret.Timer = new egret.Timer(1000,10);timer.addEventListener(egret.TimerEvent.TIMER,this.timerFunc,this);timer.start();

创建文本:
var colorLabel: egret.TextField = new egret.TextField();
colorLabel.textColor = 0xffffff;
colorLabel.textAlign = "center";
colorLabel.text = "0";
colorLabel.size = 20;
this.addChild(colorLabel);

然后统计10秒内,点击多少次。效果如图所示:


4.编译发布

编译:在Terminal里面先编译一次,egret build,修改改都需要编译一次,因为他需要把ts转换成js。

发布:命令egret publish,然后就会自动编译了,在对应文件夹就可以找到发布版,如图所示:

将launcher、resource、index.html拷贝到服务器上就OK了。

一个简单的小游戏就这么完成了。

MT.Team

【h5-egret】如何快速开发一个小游戏的更多相关文章

  1. DirectX游戏开发——从一个小游戏開始

    本系列文章由birdlove1987编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/26364129 写在前面:自 ...

  2. 使用Laya引擎开发微信小游戏(上)

    本文由云+社区发表 使用一个简单的游戏开发示例,由浅入深,介绍了如何用Laya引擎开发微信小游戏. 作者:马晓东,腾讯前端高级工程师. 微信小游戏的推出也快一年时间了,在IEG的游戏运营活动中,也出现 ...

  3. 【转】利用 three.js 开发微信小游戏的尝试

    前言 这是一次利用 three.js 开发微信小游戏的尝试,并不能算作是教程,只能算是一篇笔记吧. 微信 WeChat 6.6.1 开始引入了微信小游戏,初期上线了一批质量相当不错的小游戏.我在查阅各 ...

  4. 使用Laya引擎开发微信小游戏

    在支持微信小游戏的游戏引擎中,Cocos,Egret,Laya都对小游戏的开发提供了很多强大的支持.前段时间正好抽空研究了一下这块的内容,现做一个总结,针对如何使用Laya引擎开发微信小游戏给大家做一 ...

  5. 使用PixiJS做一个小游戏

    PixiJS PixiJS使用WebGL,是一个超快的HTML5 2D渲染引擎.作为一个Javascript的2D渲染器,Pixi.js的目标是提供一个快速的.轻量级而且是兼任所有设备的2D库. 官方 ...

  6. 如何快速开发一个支持高效、高并发的分布式ID生成器

    ID生成器是指能产生不重复ID服务的程序,在后台开发过程中,尤其是分布式服务.微服务程序开发过程中,经常会用到,例如,为用户的每个请求产生一个唯一ID.为每个消息产生一个ID等等,ID生成器也是进行无 ...

  7. Pygame:编写一个小游戏 标签: pythonpygame游戏 2017-06-20 15:06 103人阅读 评论(0)

    大学最后的考试终于结束了,迎来了暑假和大四的漫长的"自由"假期.当然要自己好好"玩玩"了. 我最近在学习Python,本意是在机器学习深度学习上使用Python ...

  8. Python开发转盘小游戏

    Python开发转盘小游戏 Python  一 原理分析 Python开发一个图形界面 有12个选项和2个功能键 确定每个按钮的位置 每个按钮的间隔相同 点击开始时转动,当前选项的背景颜色为红色,其他 ...

  9. 教你用webgl快速创建一个小世界

    收录待用,修改转载已取得腾讯云授权 作者:TAT.vorshen Webgl的魅力在于可以创造一个自己的3D世界,但相比较canvas2D来说,除了物体的移动旋转变换完全依赖矩阵增加了复杂度,就连生成 ...

随机推荐

  1. Linux(CentOS)同步时间

    可参考:http://www.ntp.org.cn/ http://www.cnblogs.com/pipelone/archive/2009/06/17/1505002.html 当前已提供的各国N ...

  2. codeforces 677C C. Vanya and Label(组合数学+快速幂)

    题目链接: C. Vanya and Label time limit per test 1 second memory limit per test 256 megabytes input stan ...

  3. 上架第一个APP到苹果商店被拒绝5次

    - : Metadata Rejected (APP中的注册时跳转的 - 用户协议视图没有内容).Waiting For Review 6天  In Review 1天 第二次被拒绝 -- : Met ...

  4. Linux 内核模块可选信号

    一 . 内核模块可选信号 1 . 模块申明 (1). MODULE_LICENSE(遵守的协议) 申明该模块遵守的许可证协议,如:“GPL”."GPL V2" (2). MODUL ...

  5. 第六十八篇、OC_按照某一字段对数值进行排序

    代码中是根据"create_time_" 进行排序   ascending:决定的是升序还是降序排序 NSSortDescriptor *sortDescriptor = [[NS ...

  6. Cocos2d-JS内置粒子系统

    从类图中我们可以看到,Cocos2d-JS中有内置的11种粒子,这些粒子的属性都是预先定义好的,我们也可以在程序代码中单独修改某些属性,我们在上一节的实例中都已经实现了这些属性的设置.内置粒子系统内置 ...

  7. UILabel自适应高、宽

    根据Label和字体大小自适应高度 - (CGFloat)getHeightWithLabel:(UILabel *)label andFontSize:(CGFloat)size { label.n ...

  8. 【学习笔记】【C语言】循环结构-do while

    用法: while (条件) {     } do {   } while(条件);   while和do-while的区别 1.很多情况下,while和do while可以互换   2.while特 ...

  9. php连接到数据库

    html代码: <form action="php_mysql_add.php" method="post"> 用户名: <input typ ...

  10. Linux 伙伴算法简介

        本文将简要介绍一下Linux内核中的伙伴分配算法. Technorati 标签: 伙伴算法     算法作用      它要解决的问题是频繁地请求和释放不同大小的一组连续页框,必然导致在已分配 ...