博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Phaser之TextBox
阅读量:5236 次
发布时间:2019-06-14

本文共 1988 字,大约阅读时间需要 6 分钟。

         使用Phaser有一段时间的,越来越喜欢这个游戏引擎,但是它不像egret那样有专业的公司和团队去维护,并提供大量的工具,所以Phaser没有那么多的工具,但是真的很好用。

      在做游戏登录界面的时候,发现Phaser没有提供TextBox的控件,在官方的论坛进行搜索以后得到了如下的结论

     大部分的情况都是采用DOM的方式来去实现textbox。

     本文采用DOM的方式实现了可以自适应Phaser画布的TextBox,效果图如下:

实现步骤如下:

1.自适应屏幕的程序在Phaser提供的模板里,具体可以到Phaser的官网上下载最新的源码,在源码里找到temple文件夹里面的fullscreen工程,因为该工程实现了屏幕的自适应缩放。

2.创建一个名为的js文件

3.在该文件中定义function HtmlTextBox(game,x,y,width,height,text,style),作为使用类

4.实现主要内容

 
 
this.game = game;this.parentElement = game.canvas.parentNode;//创建一个inputElementthis.textBoxElement = document.createElement('input');this.textBoxElement.style.position = 'absolute';this.textBoxElement.style.left = x+'px';this.textBoxElement.style.top = y+'px';this.textBoxElement.style.width = width;this.textBoxElement.style.height = height;this.parentElement.insertBefore(this.textBoxElement,game.canvas);
上述代码添加了一个html的input。
 
 
 
//更新函数,用来重新计算TextBox的位置HtmlTextBox.prototype.update  = function(){    var canvas = this.game.canvas;    var canvasX = canvas.offsetLeft;    var canvasY =  canvas.offsetTop;    var canvasWidth = canvas.offsetWidth;    var canvasHeight = canvas.offsetHeight;    if(this.oldCanvasWidth == canvasWidth && this.oldCanvasHeight == canvasHeight        && this.oldCanvasX == canvasX && this.oldCanvasY == canvasY)return;    var gameWidth = this.game.world.width;    var gameHeight = this.game.world.height;    var widthScanle = canvasWidth/gameWidth;    var heightScanle = canvasHeight/gameHeight;    var xScanle = this._x/gameWidth;    var yScanle = this._y/gameHeight;    var newX = canvasX + canvasWidth * xScanle;    var newY = canvasY + canvasHeight * yScanle;    var newWidth = this._width * widthScanle;    var newHeight = this._height * heightScanle;    this.setX(newX);    this.setY(newY);    this.setWidth(newWidth);    this.setHeight(newHeight);    this.oldCanvasWidth = canvasWidth;    this.oldCanvasHeight = canvasHeight;    this.oldCanvasX = canvasX;    this.oldCanvasY = canvasY;}
 
 
 
 

转载于:https://www.cnblogs.com/litengfei/p/4250009.html

你可能感兴趣的文章
【Leetcode_easy】832. Flipping an Image
查看>>
Codeforces712B【= =】
查看>>
[POI2008]砖块Klo
查看>>
HttpClient参观记:.net core 2.2 对HttpClient到底做了什么?
查看>>
Java扫描指定包中所有类
查看>>
MyEclipse启动性能优化(----加快启动速度)
查看>>
C#中文件操作
查看>>
LoadRunner使用odbc时报错can't get hostname for your address的解决方法
查看>>
(三)ubuntu学习前传—uboot常见环境变量
查看>>
Saiku去掉登录模块
查看>>
直接插入排序
查看>>
DAO设计模式
查看>>
GET和POST请求方式
查看>>
android ViewPager之PagerAdapter中View的重用
查看>>
VS2013 切换用户
查看>>
新浪微博桌面应用--仿qq界面的完美实现
查看>>
可能是一场很 IN 的技术分享
查看>>
JavaEE--JSP指令
查看>>
杨建:网站加速--服务器编写篇(上)
查看>>
牛客网 完数VS盈数
查看>>