JSFiddle演示就在这里,但我也粘贴了下面的代码.我的问题很简单(虽然我似乎找不到任何关于如何实现这一点的例子):现在如果你在JSFiddle中开始游戏,你会看到矩形立即"落下".当我点击鼠标时(基本上在鼠标第一次点击之前没有任何反应),我会以某种方式喜欢游戏开始 - 关于如何实现这一点的任何要点?
JS:
// Initialize Phaser, and creates a 400x490px game
var game = new Phaser.Game(400, 490, Phaser.AUTO, 'game_div');
var game_state = {};
// Creates a new 'main' state that wil contain the game
game_state.main = function () {};
game_state.main.prototype = {
preload: function () {
// Change the background color of the game
this.game.stage.backgroundColor = '#71c5cf';
// Load the bird sprite
this.game.load.image('bird', 'https://lh6.googleusercontent.com/Xrz0PnR6Ezg5_k5zyFKxGv0LzehAP9SMj_ga3qQzIF4JAfv8xHm7TxfliwtBD8ihfw=s190');
this.game.load.image('pipe', 'https://lh4.googleusercontent.com/RSMNhJ3KY4Xl0PQpUf6I9EayOdLhvOKKV9QV7_BXXYVedPy0oMNRFKANW14xV76NDA=s190');
},
create: function () {
// Display the bird on the …Run Code Online (Sandbox Code Playgroud) 我有以下代码:
var lion = game.add.sprite(2, 2,'lion');
var jump = game.add.tween(lion);
jump.to({x: 1000, y: 1000 }, 10000, Phaser.Easing.Linear.None);
// ...
jump.start();
Run Code Online (Sandbox Code Playgroud)
我创建了一个精灵,想让它在两点之间移动,这里我将狮子从左上角移动到右下角的某个点(1000,1000)。是否可以在这个动作中添加弹跳动作?
目前狮子正在直线移动,但我想让它看起来好像狮子在跳跃,如下所示:

我将如何实现这一目标?补间真的能够生成这样的复杂路径吗?
我是Phaser的新手并且有一个简单的问题.我有一个名为杯子的组对象,我正在添加6个精灵.但是,如果每个sprite都没有将它的anchor属性设置为0.5,0.5,那么它们也不会被放置在我想要它们的位置.我可以在将每个精灵锚添加到组后更改它,但我觉得必须有更好的方法,例如
var myGroup = game.add.group();
..add sprites here
myGroup.anchor.setTo(0.5,0.5);
Run Code Online (Sandbox Code Playgroud)
这是我目前的代码.
window.onload = function() {
var game = new Phaser.Game(800, 600, Phaser.AUTO, '', { preload: preload, create: create, update: update });
function preload() {
game.load.image('table', 'assets/img/table.png');
game.load.image('cup', 'assets/img/cup.png');
game.load.image('ball', 'assets/img/ball.png');
}
function create() {
var table = game.add.sprite(game.world.centerX, game.world.centerY, 'table');
table.anchor.setTo(0.5,0.5);
var cupW = game.cache.getImage('cup').width;
var cupH = game.cache.getImage('cup').height;
var cups = game.add.group();
var cup = cups.create(game.world.centerX, cupH / 2, 'cup');
cup.anchor.setTo(0.5,0.5);
cup = cups.create(game.world.centerX - cupW, cupH / 2, 'cup'); …Run Code Online (Sandbox Code Playgroud) 我正在使用Phaser Framework for Android制作游戏.我需要让画布填充整个屏幕宽度,然后用背景颜色填充它,然后将内容放在屏幕的中心.目前,即使我已经将画布的宽度设置为窗口宽度,Phaser仍将其重置为内容宽度,该宽度较小,然后仅使用背景填充内容宽度.
如何阻止Phaser使用内容宽度?
var gameObj = new Phaser.Game($(".parent").width(), 700, Phaser.CANVAS, 'parent');
gameObj.stage.backgroundColor = '#A6E5F5';
gameObj.load.image('prld', 'prl.png');
gameObj.scale.scaleMode = Phaser.ScaleManager.SHOW_ALL;
gameObj.scale.pageAlignHorizontally = true;
gameObj.scale.pageAlignVertically = true;
gameObj.scale.setScreenSize(true);
gameObj.scale.refresh();
gameObj.stage.backgroundColor = '#A6E5F5';
// Load Content Here
gameObj.load.image('h1', 'res1/h1.png');
gameObj.load.image('h2', 'res1/h2.png');
....
g = gameObj.add.group();
g.create(20, 20, 'h1');
g.create(60, 20, 'h2');
....
Run Code Online (Sandbox Code Playgroud) 我在这里寻找答案,但我找不到任何有用的东西.
基本上我正在制作塔防游戏.每个塔都是动态创建的并且已启用onClick.在onClick监听器中,我试图在类中调用一个方法.
例如,玩家点击塔并可以选择升级
但是,侦听器中的方法是输出未定义的函数.我知道这显然与我的范围有关.但我无法弄清楚我错过了什么?
当然应该是这样的:
someListener: function(){
this.game.doSomeOtherFunction();
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试过console.log并且肯定会调用someListener,但是内部的方法是未定义的.
谢谢,
这个问题与phaser.io有关.有人可以告诉我如何使组内的对象相互冲突.就在我做的时候
//board is the group and it has many elements
//Floor is where all the elements fall to
game.physics.arcade.collide(this.board, this.floor);
Run Code Online (Sandbox Code Playgroud)
当组在同一位置撞到地板时,组内的所有元素都堆叠在一起.换句话说,堆栈建立在一个位置,最新的一个隐藏前一个元素,而不是一个位于另一个位于更高位置的另一个位置.如何使堆栈向上构建?如果你能告诉我如何让组内部的元素碰撞会很棒.谢谢.
我正在Phaser中创建一个Rpg,我试图在Sprite上创建一个Flash效果 - 这意味着将Sprite全部变为白色,然后恢复原来的颜色.
所以我的问题是:实现这种效果的最佳方法是什么?.到目前为止我已尝试过两种解决方案,但我遗漏了一些东西:
我尝试补间精灵的tint参数,如下所示:
this.game.add.tween(enemy).to({
tint: 0xffffff,
}, 100, Phaser.Easing.Exponential.Out, true, 0, 0, true);
Run Code Online (Sandbox Code Playgroud)
但它不起作用,因为将色调设置为0xffffff与将其设置为默认颜色相同.
我的第二个可能的解决方案是添加一个具有相同大小的精灵的白色方块,并使用实际的精灵作为方块的掩码:
var flash = this.game.add.graphics(0, 0);
flash.beginFill(0xffffff);
flash.drawRect(enemy.x, enemy.y, enemy.width, enemy.height);
flash.endFill();
flash.mask = enemy // enemy is my Sprite
/* .. code for tweening the flash */
Run Code Online (Sandbox Code Playgroud)
这个解决方案的问题是掩码 需要是PIXI.Graphics对象 ; 我正在使用Sprite对象.
所以请,任何指导将不胜感激.
我正在创建一个Phaser游戏,它将构成一个更大的JS应用程序的一部分.当玩家完成一个关卡时,我需要隐藏游戏,以便在游戏在下一关卡的后期再次显示之前返回执行其他任务.
我很难找到一种合理的方法来触发一个事件(或另一种调用回调函数的方式)从一个Phaser.Game实例化它的JS.
我此刻想到的唯一想法是手动将回调添加到游戏中:
function onLevelComplete() {
// example callback function
}
this.game = new Phaser.Game(800, 600, Phaser.AUTO, this.el);
this.game.levelCompleteCallback = onLevelComplete;
Run Code Online (Sandbox Code Playgroud)
然后Phaser.Game我可以做任何事情(例如在一个州内)this.game.levelCompleteCallback().
麻烦的是,这感觉非常紧密.我想要的是一种做某事的方式,而不必this.game.fireEvent('levelComplete')关心另一方是否有任何倾听.
是否有任何内置的我缺少可以让我做我需要的东西?
我正在构建一个游戏,我可以进入一个建筑物,我正在通过各州进行处理.换句话说,当我的角色与门重叠时,程序开始建立建筑物内部的新状态.现在,我希望内部的尺寸比世界更小,所以我想在开始这个新状态时改变游戏大小.
我试过这个:
create: function()
{
//game size was 1000x700, I want to scale it to 700x450
game.width = 700;
game.height = 450;
//rest of creation code...
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过改变相机范围,世界范围,世界大小等内容,但上面的方法显示了最大的希望.
但问题是,在我点击浏览器选项卡并返回之前,由于某种原因调整大小不会显示.在控制台中调用game.width始终会产生700,但是直到Tabs out和back才会显示它.
最重要的是,当游戏调整大小时,游戏内容(地板,家具)会缩小,从而无法实现目的.我不明白为什么会这样,因为我的代码中没有任何缩放.
任何帮助将不胜感激.
我尝试创建的视频游戏有问题。
我的问题是,我使这首歌变得非常强大,并查看了我所看到的可以形成音量的文档,应用了这种形成它的方式而没有任何结果。不是如果我解释正确的话...
我在打字稿中的代码:
export class SampleScene extends Phaser.Scene {
private song: Phaser.Sound.BaseSound;
public preload() {
// TODO: Add your code
this.load.audio('theme', 'assets/audio/sayrun.mp3');
}
public create() {
// TODO Add your code.
this.song = this.sound.add('theme');
this.song.play('volume', {volume: 0.5});
}
}
Run Code Online (Sandbox Code Playgroud) phaser-framework ×10
javascript ×4
android ×1
animation ×1
function ×1
game-physics ×1
html5 ×1
html5-audio ×1
pixi.js ×1
resize ×1
scaling ×1
size ×1
states ×1
tween ×1
typescript ×1
volume ×1