今天继续学习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. python selenium 滚动条处理、页面拖动

    selenium中没有直接控制滚动条的方法,可以使用方法:execute_script(),可以直接执行js的脚本. 一.竖向滚动条控制,三种方法总有一款适合你. 1.滚动条拉到最底: js=&quo ...

  2. python连接sql server数据库

    记录一下pyodbc连接数据库的使用方法和注意事项,基于python2.7:  前提: pip install pyodbc  .下载pyodbc包.   pyodbc.connect('DRIVER ...

  3. docker 笔记(3)第一个dockerfile

    #vim Dockerfile FROM ubuntu RUN apt-get update && apt-get install -y vim #docker build -t ub ...

  4. myeclipse 10破解

    因为笔者的电脑是刚买不久,忘记先给电脑分区,等软年安装差不多了才发现忘记分区,所以就备份了数据,然后分区,结果分区过程中没有异常发生,就没用备用数据,就用分过区的原数据,当时还以为没问题,结果打开my ...

  5. eclipse利用mybatis-generator生成代码

    由于mybatis是半自动的ORM框架,表到POJO的映射可以由mybatis-generator完成,映射文件也可以由它生成,下面介绍生成步骤: 1.新建maven项目:File->Other ...

  6. 什么是Scatter/Gather?

    scatter/gather指的在多个缓冲区上实现一个简单的I/O操作,比如从通道中读取数据到多个缓冲区,或从多个缓冲区中写入数据到通道: scatter(分散):指的是从通道中读取数据分散到多个缓冲 ...

  7. JAVA中string类的split方法

    split([separator,[limit]])第一个参数为分隔符,可以是一个正则表达式,第二个参数为返回结果数组的长度

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

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

  9. dll注入及卸载实践

    三种方法:具体详见<逆向工程核心原理>. 1.创建远程线程CreateRemoteThread() 2.使用注册表AppInit_DLLs 3.消息钩取SetWindowsHookEx() ...

  10. ubuntu下使用PIL中的show函数,无法显示图片的问题

    问题描述:ubuntu14.04系统,python2.7(version),正在学习python中, from PIL import Image im = Image.open('1.jpg') im ...