使用javascript的Phaser中的一种奇怪行为

使用javascript的Phaser中的一种奇怪行为,javascript,phaser-framework,Javascript,Phaser Framework,首先 我根本不是游戏开发的初学者,而是网络游戏开发的初学者 我从Phaser开始,因为它看起来很好,并且针对手机游戏进行了优化 无论如何 我的游戏有一个奇怪的行为——我放了一个矩形并试图移动它(当我调试X轴时,它已经正确地改变了,但我看不到矩形移动!!) 我的密码 var game = new Phaser.Game(window.innerWidth,window.innerHeight,Phaser.AUTO); var colors = ["#FF0000" , "#00FF00" , "

首先

我根本不是游戏开发的初学者,而是网络游戏开发的初学者

我从Phaser开始,因为它看起来很好,并且针对手机游戏进行了优化

无论如何

我的游戏有一个奇怪的行为——我放了一个矩形并试图移动它(当我调试X轴时,它已经正确地改变了,但我看不到矩形移动!!)

我的密码

var game = new Phaser.Game(window.innerWidth,window.innerHeight,Phaser.AUTO);
var colors = ["#FF0000" , "#00FF00" , "#0000FF" , "#FFFF00" , "#00FFFF" , "#FFFF00"];
var lst;
var hlprs = [];
var gameState = {
    preload: function () {
        this.game.stage.backgroundColor = "#FFFFFF";
    },
    create: function () {
        for (var i = 0 ; i < 8 ; i++)
        {
                hlprs[i] = new Phaser.Rectangle((i*200),0,100,20);
                hlprs[2*i + 1] = new Phaser.Rectangle((i*200),window.innerHeight - 20,100,20);

                game.debug.geom(hlprs[i] , colors[Math.floor((Math.random() * 6))]);
                game.debug.geom(hlprs[2*i + 1] , colors[Math.floor((Math.random() * 6))]);
        }
    },
    update: function ()
    {
        moving();// it calls moving function and X axis is changes but (the rectangle does not move !!!)
    }
};
function moving()
{
    for (var i = 0 ; i < 8 ; i++)
    {
        hlprs[i].offset(-1,0);
        hlprs[2*i + 1].offset(-1,0);
    }
}
game.state.add('GameState' , gameState);
game.state.start('GameState');
var game=new Phaser.game(window.innerWidth,window.innerHeight,Phaser.AUTO);
变量颜色=[“#FF0000”、“#00FF00”、“#0000FF”、“#FF00”、“#00FFFF”、“#FF00”];
var-lst;
var-hlprs=[];
变量配子状态={
预加载:函数(){
this.game.stage.backgroundColor=“#FFFFFF”;
},
创建:函数(){
对于(变量i=0;i<8;i++)
{
hlprs[i]=新的相位器矩形((i*200),0100,20);
hlprs[2*i+1]=新的相位器矩形((i*200),窗内高度-20100,20);
game.debug.geom(hlprs[i],colors[Math.floor((Math.random()*6));
game.debug.geom(hlprs[2*i+1],colors[Math.floor((Math.random()*6));
}
},
更新:函数()
{
moving();//调用moving函数,X轴改变,但(矩形不移动!!!)
}
};
函数移动()
{
对于(变量i=0;i<8;i++)
{
hlprs[i]。偏移量(-1,0);
hlprs[2*i+1]。偏移量(-1,0);
}
}
game.state.add('GameState',GameState');
game.state.start('GameState');

如果不进行测试,我猜会发生以下情况:创建一组形状,然后对每个形状调用
game.debug.geom()
。与此同时,形状确实开始移动,但由于您从未再次调用
game.debug.geom()
,因此您从未看到任何移动

如果您打算使用来自
game.debug
的方法,它们通常应该进入状态的
render()
方法中(每帧调用一次)


请注意,调试方法将用于调试。显示形状的正确方法是制作一个精灵或一个图像(在这种情况下,你不必手动更新任何东西,因为Phaser会处理它)。

如果不测试它,我猜会发生以下情况:创建一组形状,然后对每个形状调用
game.debug.geom()
。与此同时,形状确实开始移动,但由于您从未再次调用
game.debug.geom()
,因此您从未看到任何移动

如果您打算使用来自
game.debug
的方法,它们通常应该进入状态的
render()
方法中(每帧调用一次)

请注意,调试方法将用于调试。显示形状的正确方法是制作一个精灵或一个图像(在这种情况下,你不必手动更新任何东西,因为Phaser会处理它)。

因为
update()
函数调用
moving()
你可能想让你的
游戏在
moving
中调试
命令

function moving()
{
    for (var i = 0 ; i < 8 ; i++)
    {
       hlprs[i].offset(-1,0); 
       hlprs[2*i + 1].offset(-1,0);
       // update here
       game.debug.geom(hlprs[i] , colors[Math.floor((Math.random() * 6))]);
       game.debug.geom(hlprs[2*i + 1] , colors[Math.floor((Math.random() * 6))]);            
    }
}
函数移动()
{
对于(变量i=0;i<8;i++)
{
hlprs[i]。偏移量(-1,0);
hlprs[2*i+1]。偏移量(-1,0);
//在此更新
game.debug.geom(hlprs[i],colors[Math.floor((Math.random()*6));
game.debug.geom(hlprs[2*i+1],colors[Math.floor((Math.random()*6));
}
}
这里有一个演示:

由于
update()
函数调用了
moving()
,您可能需要在
移动中调试
命令

function moving()
{
    for (var i = 0 ; i < 8 ; i++)
    {
       hlprs[i].offset(-1,0); 
       hlprs[2*i + 1].offset(-1,0);
       // update here
       game.debug.geom(hlprs[i] , colors[Math.floor((Math.random() * 6))]);
       game.debug.geom(hlprs[2*i + 1] , colors[Math.floor((Math.random() * 6))]);            
    }
}
函数移动()
{
对于(变量i=0;i<8;i++)
{
hlprs[i]。偏移量(-1,0);
hlprs[2*i+1]。偏移量(-1,0);
//在此更新
game.debug.geom(hlprs[i],colors[Math.floor((Math.random()*6));
game.debug.geom(hlprs[2*i+1],colors[Math.floor((Math.random()*6));
}
}
下面是一个演示: