今天继续学习phaser.js。上周写的学习教程主要内容是创建游戏场景,游戏中的显示对象,按钮对象的使用以及如何在不同屏幕大小中完美适配。这篇博客以介绍游戏榜单的渲染更新为主。

    代码地址:https://github.com/dreamITGirl/phaser,具体文件为Billboard.js。

    这个学习过程是以一个类似于头脑风暴的游戏为实例,来学习phaser的框架,会有很多API讲不到,可自己去查,去学习。

    由于考虑到后面的需求,所以现在将文件的文件名改了,demo01.js改为了load.js(用于加载图片和精灵图),增加了game.js(公共的函数以及游戏场景的创建)

    创建文本文字

    

    这里可以看一下创建文本对象的时候需要的参数,有五个参数,第一个一般是游戏对象,一般指的是game对象。x代表文字在x方向上的位置,y代表文字在y方向的位置。text--想要渲染的文字内容,style-文字样式

    更改文本内容

    在phaser.js中有一个setText的方法,但是,也可以直接给这个文本对象的text属性赋值。建议输出一下创建的文本对象的属性。这样,能更熟悉的运用这个文本对象。

    

    具体使用可以看一下代码;这里我把Billboard的代码贴出来,具体的调用可以在gitHub中看.

    

/*如何将渲染游戏中的文字*/
//需求:榜单排名需要每隔一段事件就要更新,这里我们就在update或者render函数中改变排名内容;
//update和render函数是每秒就会调一次,但它并不会影响整个游戏的内存
function Billboard(){
var self = this;//在ajax中的this并不会指向我们想要的对象
this.init = function(){ this.listArr = []
// this.load.image('score-list','./images/score-list.png');//加载图片,需要放在demo01.js中的load函数里统一加载,否则加载不出来
}
this.preload = function(){
loadbg()//加载背景
/*增加游戏所需要的图片,使用的demo01.js封装的函数*/
addImage(24,120,'score-list',594,879)
addSprite(24,37,'back',50,50,function(){
game.state.start('Load')//点击榜单可进入榜单页面
})
/*var listbg = game.add.image(24*bl,120*bl,'score-list');
listbg.width = 594 *bl;
listbg.height = 879 *bl;*///这个函数是addImage未封装的内容。
this.loadText() }
this.update = function(){
setTimeout(function(){
$.ajax({
type:"get",
url:"./json/billboard.json",
async:true,
success:function(data){
for(var i=0;i<data.length;i++){
if(i<self.listArr.length){
self.listArr[i][0].text= data[i].ranking;
self.listArr[i][1].text= data[i].name;
self.listArr[i][2].text= data[i].score;
self.listArr[i][3].text= data[i].questionNum+' / '+data[i].useTime+' / '+data[i].rightRadio;
}else{
self.listArr[i] = [
self.addText(62,i,data[i].ranking,30,'#6CDDFA'),
self.addText(122,i,data[i].name,30,'#666'),
self.addText(250,i,data[i].score,30,'#666'),
self.addText(383,i,data[i].questionNum+' / '+data[i].useTime+' / '+data[i].rightRadio,24,'#666')
]
}
}
}
});
},2000) }
this.addText = function(x,i,text,fontSize,color){
var top =( 200+81*i+(80-fontSize)/2)*bl;
var text = this.add.text(x*bl,top,text,{
fill:color,
fontSize:(fontSize *bl),
fontWeight:'normal',
})//有四个参数,this.add.text(x,y,text,style)//这四个参数分别代表了文本的x方向的位置,y方向的位置,当前的文本内容,样式对象;渲染的字体基本都是默认加粗的字体。
return text
}
this.loadText = function(){
/*用ajax请求榜单数据*/
$.ajax({
type:"get",
url:"./json/version.json",
async:true,
success:function(res){
for (var i=0;i<res.length;i++) {
self.listArr[i] = [
self.addText(62,i,res[i].ranking,30,'#6CDDFA'),
self.addText(122,i,res[i].name,30,'#666'),
self.addText(250,i,res[i].score,30,'#666'),
self.addText(383,i,res[i].questionNum+' / '+res[i].useTime+' / '+res[i].rightRadio,24,'#666')
]
}
},
error:function(err){
console.log(JSON.stringify(err))
}
});
} }

    

phaser小游戏框架学习(二)的更多相关文章

  1. phaser小游戏框架学习(一)

    这两天由于项目的需要,所以简单学了一下phaser框架. 官网:http://phaser.io/ 还有一个phaser小站,是中文的网站,但是内容不如英文文档全,大家也可以去看这个网站,需要查阅AP ...

  2. phaser小游戏框架学习中的屏幕适配

    这篇博客主要讲一下上一篇博客的右侧和底部出现的问题.就是页面会有偏移量.说一下这个产生的原因吧. 一开始在构建html页面的时候,习惯性的在页面中加了 <meta name="view ...

  3. Struts2框架学习(二) Action

    Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器 ...

  4. 【WePY小程序框架实战二】-页面结构

    [WePY小程序框架实战一]-创建项目 项目结构 |-- dist |-- node_modules |-- src | |-- components |-- a.wpy |-- b.wpy |-- ...

  5. Unity 游戏框架搭建 (二十三) 重构小工具 Platform

    在日常开发中,我们经常遇到或者写出这样的代码 var sTrAngeNamingVariable = "a variable"; #if UNITY_IOS || UNITY_AN ...

  6. Phaser小游戏

    本来今天打算阅读AngularJs源代码的,但是上头下来了任务,做个小霸王上面的那种接金蛋的游戏,想象最近系统的学习了一下gulp和之前熟悉了一遍的Phaser,于是就打算用这两个东西一起来做个dem ...

  7. 从一点儿不会开始——Unity3D游戏开发学习(二) ——GUI控件之Button

    一些废话 我在上一篇“一点儿不会”的系列随笔中说大概一周会发个2~3篇关于Unity的学习笔记.可这就两周过去了,我还停留在一篇的进度上,主要是这两周发生了一些事情导致我更新缓慢.其实截至目前为止,上 ...

  8. Android 学习笔记之AndBase框架学习(二) 使用封装好的进度框,Toast框,弹出框,确认框...

    PS:渐渐明白,在实验室呆三年都不如在企业呆一年... 学习内容: 1.使用AbActivity内部封装的方法实现进度框,Toast框,弹出框,确认框...   AndBase中AbActivity封 ...

  9. Unity 游戏框架搭建 (二) 单例的模板

      上一篇文章中说到的manager of managers,其中每个manager都是单例的实现,当然也可以使用静态类实现,但是相比于静态类的实现,单例的实现更为通用,可以适用大多数情况. 如何设计 ...

随机推荐

  1. gcc和g++使用澄清

    一:gcc与g++比较 编译c/c++代码的时候,有人用gcc,有人用g++,于是各种说法都来了,譬如c代码用gcc,而 c++代码用g++,或者说编译用gcc,链接用g++,一时也不知哪个说法正确, ...

  2. Log4j配置记录(特定java包/类的日志级别控制)

    最近使用log4j,关于日志级别的如何配置生效百思不得其解,花了些时间,误打误撞终于整了,记录一下,备忘. 注意: 1.图中的2(log4j.logger.com.taobao)限制级别最高,它直接指 ...

  3. Druid 0.2.25版本hive jdbc 不支持 conn.getHoldability() 兼容处理问题

    背景: 用Druid做Oracle的连接池感觉还不错,近日新项目要用Hive,故而也想使用Duid来做Hive的连接池.试了试果真可以,也没报错.但是,过了一段时间,同样的代码却出问题了.离奇的是我同 ...

  4. UE4异步载入资源

    转自:http://blog.ch-wind.com/ue4%E5%BC%82%E6%AD%A5%E8%BD%BD%E5%85%A5%E8%B5%84%E6%BA%90/ 所有的“硬”指针指向的资源都 ...

  5. STL容器迭代器失效问题讨论

    STL源码剖析---迭代器失效小结 vector迭代器的几种失效的情况: .当插入(push_back)一个元素后,end操作返回的迭代器肯定失效. .当插入(push_back)一个元素后,capa ...

  6. 语法错误: 标识符“acosf”

    1>e:\vs2010\vc\include\cmath(19): error C2061: 语法错误: 标识符“acosf” 1>e:\vs2010\vc\include\cmath(1 ...

  7. opencv中文网站相关下载

    http://wiki.opencv.org.cn/index.php/Download

  8. spring bean属性及子元素使用总结

    spring bean属性及子元素使用总结 2016-08-03 00:00 97人阅读 评论(0) 收藏 举报  分类: Spring&SpringMVC(17)  版权声明:本文为博主原创 ...

  9. Java判断字符串是否包含数字

    public static boolean isContainNumber(String company) { Pattern p = Pattern.compile("[0-9]" ...

  10. activity的四种加载模式介绍

      四种加载模式的介绍: a) Standard : 系统默认模式,一次跳转即会生成一个新的实例:    b) SingleTop : 和 standard 类似,唯一的区别就是当跳转的对象是位于栈顶 ...