Egret白鹭H5小游戏开发入门(三)
前言:
在上一篇文章中着重介绍了H5小游戏开发的起步阶段,如Wing面板的使用,素材的处理,类的说明等等,那么今天主要是涉及到场景的创建,loading的修改等等的代码编写。
对于这一节,我在讲解的过程中会使用到众多的类或对象,对于它们的具体用法,建议查看白鹭官方文档。
文档地址:http://edn.egret.com/cn/docs/page/639
修改Loading
上一节我们讲到即将创建场景createGameScene()的时候就结束了,这一节在我们正常创建场景之前,我们先修改一下loading页的效果。毕竟它是最先进入我们视野的页面。
如果你还有印象,应该记得我提过LoadingUI的实例化的地方,并添加到stage。

为了修改loading效果,我们先打开LoadingUI.ts,我们可以看到在loading实例化之后,会执行createView()方法。
为了将文本居中,将textField的宽度改成舞台的宽度640,利用center实现水平居中。同时将y轴调到适当的位置500。
因为RES.ResourceEvent事件只能返回当前已加载数和加载总数两个参数,所以为了把加载进度更加直观一点,我们一般写成百分比的形式。
设置进度的代码如下:
public setProgress(current, total):void {
var num = Math.floor(current / total * 100);
this.textField.text = num.toString() + " %";
}
创建游戏场景
保存loadingUI.ts的修改后,接下来我们打开Main.ts,并进入到createGameScene()方法。
为了方便后面的调用,我先创建一个初始化数据的方法。
/**
* 创建游戏场景
* Create a game scene
*/
private createGameScene():void {
this.init();
}
/**
* 初始化游戏数据和场景
* initial game data
*/
private SW:number;//舞台宽
private SH:number;//舞台高
private SCORE:number = 0;//分数
private init():void{
this.SW = this.stage.stageWidth;
this.SH = this.stage.stageHeight;
//利用白鹭预设的创建bitmap方法创建背景图片
var bg = this.createBitmapByName("bg_game_jpg");
//并首先添加到舞台底部
this.stage.addChild(bg);
}
执行初始化方法后,保存并刷新浏览器就可以看到以下效果啦。一个基本的场景就出来了。

接下来,我们将头部的素材的提取出来,另建一个方法用于创建数据栏。

/**
* 创建分数栏
* create score container
*/
private TF_socre: egret.TextField;
private createScore(): void {
//为方便管理与设置,把分数栏独立于一个容器内
var cont = new egret.DisplayObjectContainer(),
bg = this.createBitmapByName("bg_top_png"),
title = this.createBitmapByName("txt_score_png"),
txt = new egret.TextField();
//添加的顺序影响层级
cont.addChild(bg);
cont.addChild(title);
cont.addChild(txt);
//整个分数容器在设计图中的位置
cont.x = 40;
cont.y = 22;
//标题和分数在分数栏内部的位置
title.x = 36;
title.y = 54;
txt.x = 100;
txt.y = 51;
//限制文本的区域
txt.width = 110;
txt.height = 32;
//定义颜色、水平与垂直居中、字体大小,初始字符、加粗等
txt.textColor = 0xffdb15;
txt.textAlign = "center";
txt.verticalAlign = "middle";
txt.size = 24;
txt.text = "0";
txt.bold = true;
//将分数TextField实例引用到Main类下的内部属性值,方便其他方法调用并修改分数值
this.TF_socre = txt;
this.stage.addChild(cont);
}
大同小异,创建时间栏的方法如下。
/**
* 创建时间栏
* create time container
*/
private TF_time: egret.TextField;
private createTime(): void {
var cont = new egret.DisplayObjectContainer(),
bg = this.createBitmapByName("bg_top_png"),
title = this.createBitmapByName("txt_time_png"),
txt = new egret.TextField();
cont.addChild(bg);
cont.addChild(title);
cont.addChild(txt);
cont.x = 352;
cont.y = 22;
title.x = 36;
title.y = 54;
txt.x = 100;
txt.y = 51;
txt.width = 110;
txt.height = 32;
txt.textColor = 0xffdb15;
txt.textAlign = "center";
txt.verticalAlign = "middle";
txt.size = 24;
txt.text = "0 S";
txt.bold = true;
this.TF_time = txt;
this.stage.addChild(cont);
}
创建时间栏方法
创建以上方法后,并在init()方法内通过this.createScore()和this.createTime()调用,刷新浏览器可看到以下变化。

PS:时间关系,原本本文打算写更多的,但是为了保证延续性,先发这部分了。
接下来将继续更新第四篇,敬请期待。
转载请注明出处,谢谢。

Egret白鹭H5小游戏开发入门(三)的更多相关文章
- Egret白鹭H5小游戏开发入门(二)
前言: 昨天的文章中简单的介绍了Egret白鹭引擎从安装到基本的使用配置等问题,今天着重介绍H5小游戏开发的起步阶段,如Wing面板的使用,素材的处理,类的说明,开始布局等等. 整体概况: 根据上一篇 ...
- Egret白鹭H5小游戏开发入门(一)
前言: 好久没更新博客了,以前很多都不会,所以常常写博客总结,倒是现在有点点经验了就懒了.在过去的几个月里,在canvas游戏框架方面,撸过了CreateJS,玩得了Egret,又学过PIXI.js. ...
- .Net Core ORM选择之路,哪个才适合你 通用查询类封装之Mongodb篇 Snowflake(雪花算法)的JavaScript实现 【开发记录】如何在B/S项目中使用中国天气的实时天气功能 【开发记录】微信小游戏开发入门——俄罗斯方块
.Net Core ORM选择之路,哪个才适合你 因为老板的一句话公司项目需要迁移到.Net Core ,但是以前同事用的ORM不支持.Net Core 开发过程也遇到了各种坑,插入条数多了也特别 ...
- 重拾H5小游戏之入门篇(二)
上一篇,水了近千字,很酸爽,同时表达了"重拾"一项旧本领并不容易,还有点题之效果.其实压缩起来就一句话:经过了一番记忆搜索,以及try..catch的尝试后,终于选定了Phaser ...
- 开发H5小游戏
Egret白鹭H5小游戏开发入门(一) 前言: 好久没更新博客了,以前很多都不会,所以常常写博客总结,倒是现在有点点经验了就懒了.在过去的几个月里,在canvas游戏框架方面,撸过了CreateJ ...
- 从零开始开发一款H5小游戏(三) 攻守阵营,赋予粒子新的生命
本系列文章对应游戏代码已开源 Sinuous game. 每个游戏都会包含场景和角色.要实现一个游戏角色,就要清楚角色在场景中的位置,以及它的运动规律,并能通过数学表达式表现出来. 场景坐标 canv ...
- 一、微信小游戏开发 --- 初次在微信开发者工具里跑Egret小游戏项目
尝试下Egret的小游戏开发,学习,学习,干IT,不学习,就得落后啊... 相关教程: Egret微信小游戏教程 微信公众平台-微信小游戏教程 微信公众平台-微信小游戏接入指南 开发版本: Egret ...
- 从零开始开发一款H5小游戏(二) 创造游戏世界,启动发条
本系列文章对应游戏代码已开源 Sinuous game 上一节介绍了canvas的基础用法,了解了游戏开发所要用到的API.这篇文章开始,我将介绍怎么运用这些API来完成各种各样的游戏效果.这个过程更 ...
- 【转帖】H5 手机 App 开发入门:概念篇
H5 手机 App 开发入门:概念篇 http://www.ruanyifeng.com/blog/2019/12/hybrid-app-concepts.html 作者: 阮一峰 日期: 2019年 ...
随机推荐
- AIX下tar解包问题
今天,在AIX下安装tomcat,上传的版本是apache-tomcat-6.0.41.tar.gz,但用tar解压时出现以下问题: # tar xvf apache-tomcat-6.0.41.ta ...
- select语句for update---转载
作用: Select…For Update语句的语法与select语句相同,只是在select语句的后面加FOR UPDATE [NOWAIT]子句. 该语句用来锁定特定的行(如果有where子句,就 ...
- Tools - Markdown
Markdown 轻量级标记语言,使用易读易写的纯文本格式和类似HTML的标记语法来编写具有一定的格式的文档. wiki - Markdown 三分钟学会书写格式良好的笔记(Markdown) 为知笔 ...
- 推荐10个 CSS3 制作的创意下拉菜单效果
下拉菜单是一个很常见的效果,在网站设计中被广泛使用.通过使用下拉菜单,设计者不仅可以在网站设计中营造出色的视觉吸引力,但也可以为网站提供了一个有效的导航方案.使用 HTML5 和 CSS3 可以更容易 ...
- 前端模块化开发之seaJs
了解后端语言的童鞋一定听过模块化开发的概念,比如java.python等后端语言都有自己的模块化特性,然而和后端语言相比,javascript还尚未实现模块化的功能,虽然之后的更高版本可能引入模块化开 ...
- [Asp.net 5] DependencyInjection项目代码分析2-Autofac
Microsoft.Framework.DependencyInjection.Autofac源码分析 该工程只有一个代码静态类AutofacRegistration,但是该类有3个扩展方法,以及3个 ...
- c#隐藏和重写基类方法的异同
最近正在学习c#,对其中的方法重写和隐藏的概念很是模糊,现在将其归纳如下: 1:方法重写:就是在基类中的方法用virtual关键字来标识,然后在继承类中对该类进行重写(override),这样基类中的 ...
- Java泛型-类型擦除
一.概述 Java泛型在使用过程有诸多的问题,如不存在List<String>.class, List<Integer>不能赋值给List<Number>(不可协变 ...
- 【原创】asp.net导出word 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 8000401a
我的服务器:windows server 2008(64位)+microsoft office 2007 企业版 业务:网站导出应聘word简历. 出现以下错误: 检索 COM 类工厂中 CLSID ...
- avalon.js 1.4.6简单列表数据绑定ms-repeat ms-click
1.列表数据绑定 <html> <head> <meta charset="UTF-8"> <meta name="viewpo ...