Cordova 离子应用中的移相器游戏
我有一个phaser游戏,我想在ionic应用程序中实现它。我的想法是从外部链接运行phaser游戏,并在ionic应用程序内创建一个按钮,链接到游戏,并从InApp浏览器或Cordova web视图启动,如前所述 我在移动浏览器(chrome)中运行phaser游戏没有问题,但当它通过InApp浏览器或Cordova网络视图从应用程序启动时,游戏就很小了 而且,我不能点击按钮 你知道问题出在哪里吗?在phaser游戏或应用程序中 它在浏览器中运行良好 游戏链接: 播放按钮:Cordova 离子应用中的移相器游戏,cordova,ionic-framework,phaser-framework,Cordova,Ionic Framework,Phaser Framework,我有一个phaser游戏,我想在ionic应用程序中实现它。我的想法是从外部链接运行phaser游戏,并在ionic应用程序内创建一个按钮,链接到游戏,并从InApp浏览器或Cordova web视图启动,如前所述 我在移动浏览器(chrome)中运行phaser游戏没有问题,但当它通过InApp浏览器或Cordova网络视图从应用程序启动时,游戏就很小了 而且,我不能点击按钮 你知道问题出在哪里吗?在phaser游戏或应用程序中 它在浏览器中运行良好 游戏链接: 播放按钮: var jogar
var jogar = this.game.add.button(this.game.width / 2, this.game.height - this.game.height/4, "jogar");
jogar.anchor.set(0.5);
menuGroup.add(jogar);
jogar.state = "levelSelect";
jogar.events.onInputDown.add(this.onSpriteDown, this);
jogar.events.onInputOver.add(this.onSpriteOver, this);
编辑
当我第一次在浏览器中加载游戏时,它在menu.js中给了我一个错误:
onSpriteOver : function (sprite, pointer) {
JOGO.somButton.play(); //Error on this line!!!!!
var xpos = sprite.x;
if(!animate)
var tween = this.game.add.tween(sprite)
.to({ x: xpos + 6 }, 100, Phaser.Easing.Linear.None)
.to({ x: xpos - 5 }, 100, Phaser.Easing.Linear.None)
.to({ x: xpos + 4 }, 100, Phaser.Easing.Linear.None)
.to({ x: xpos - 3 }, 100, Phaser.Easing.Linear.None)
.to({ x: xpos }, 100, Phaser.Easing.Linear.None)
.start();
},
我认为somButton没有定义。我重新加载,在浏览器和手机上都可以正常工作。它并不总是给出错误。它只在浏览器和移动设备上首次加载时出错
原创
你的phaser游戏有固定的宽度和高度,还是像这样填充视口:
game = new Phaser.Game(window.innerWidth * window.devicePixelRatio, window.innerHeight * window.devicePixelRatio, Phaser.CANVAS, 'gameArea');
这是从这里拍摄的:
用更多代码编辑了这篇文章,我有这样一个:
var game=new Phaser.game(JOGO.area.width,JOGO.area.height,Phaser.CANVAS,'game')代码>我的意思是,你的设备像素密度可能非常高,这将导致你的游戏缩小。如果你浏览我链接的那篇文章,它会解释得更好。这就是为什么在我引用的代码中,它取window.innerWidth和height,然后乘以devicePixelRatio。我设法对它进行了缩放,但问题是按钮也不起作用。你能再分享一些代码吗。按钮是如何初始化的?可能是在浏览器中链接到游戏?嗯,所以问题可能是在第一次加载时。可能这就是为什么它不能在应用程序中正确加载。谢谢你的反馈。
game = new Phaser.Game(window.innerWidth * window.devicePixelRatio, window.innerHeight * window.devicePixelRatio, Phaser.CANVAS, 'gameArea');