Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我在firefox中的游戏速度如此之慢?_Javascript_Jquery_Html_Canvas_Webgl - Fatal编程技术网

Javascript 为什么我在firefox中的游戏速度如此之慢?

Javascript 为什么我在firefox中的游戏速度如此之慢?,javascript,jquery,html,canvas,webgl,Javascript,Jquery,Html,Canvas,Webgl,我在玩新的HTML5标准,看看它能提供什么,并学习一些东西。。。但我不明白为什么我的游戏在firefox中速度如此之慢 有几种方法可以选择“绘制”玩家和背景。 可以在右下角选择 我已经在firefox中测试了这个游戏,结果是: 总而言之,超慢的结果。 使用Html时,它完全滞后 帆布看起来好一点,但仍然完全落后 谷歌Chrome搜索结果: 谷歌似乎运行的代码相当好。。。它真的不拉格 Internet Explorer测试 这就是其中有趣的部分。Internet Explorer 9运行得非常好。

我在玩新的HTML5标准,看看它能提供什么,并学习一些东西。。。但我不明白为什么我的游戏在firefox中速度如此之慢

有几种方法可以选择“绘制”玩家和背景。 可以在右下角选择

我已经在firefox中测试了这个游戏,结果是:

总而言之,超慢的结果。 使用Html时,它完全滞后 帆布看起来好一点,但仍然完全落后

谷歌Chrome搜索结果:

谷歌似乎运行的代码相当好。。。它真的不拉格

Internet Explorer测试

这就是其中有趣的部分。Internet Explorer 9运行得非常好。。。在我的电脑上它几乎太快了

所以我的问题是。firefox不喜欢我的图形卡吗?或者哪里出了问题?也许我的代码太慢了?但如果我做的测试正确,只需要大约1毫秒的时间间隔就可以重新绘制图片(正如右上角名为intervalTimer的计时器所示)

我非常想知道你得到了什么结果,如果只是firefox讨厌我的图形卡-(

另外,如果你能看到我可以做一些改进,使它在firefox中工作得更好

以下是我的一些代码:

js文件运行setInterval并重新绘制播放器

function interval() {
var startdate = +new Date();  // log start timestamp

if (general_slowmo > 9)
    general_slowmo = 0;
else
    general_slowmo++;

collisions();


if (drawmethod == "canvas") {
    canvas.clearRect(0, 0, general_winwidth, general_winheight);
    drawplayercanvas(p0x, p0y, 0);
}
else if (drawmethod == "html") {
    drawplayerhtml(p0x, p0y, 0);
}
else {
    drawImageWebGl(p0, p0x, (general_winheight - p0y) - general_playerheight);
}


var enddate = +new Date();  // log end timestamp
var diff = enddate - startdate;
$("#intervalTimer").html("intervalTimer: " + diff + "ms");
}
但我在intervalTimer div上得到的时间只有0或1毫秒,但我不知道它是否计算了吸引玩家所需的时间

在间隔内,函数将运行:

function collisions() {

var spritex = p0x;
var spritey = p0y;
var jump = jumpp0;
var keyX = keyXp0;
var keyY = keyYp0;
var onground = ongroundp0;

if (keyX == -1) { //left movement
    if (blockexists(spritex - 1, spritey) === false && blockexists(spritex - 1, spritey + general_blocksize) === false) {
        spritex--;
    }
}

if (keyX == 1) { //right movement
    if (blockexists(spritex + general_playerwidth, spritey) === false && blockexists(spritex + general_playerwidth, spritey + general_blocksize) === false) {
        spritex++;
    }
}

if (jump != 0) {
    var aboveone = blockexists(spritex, spritey + (general_playerheight - 1));
    var abovetwo = blockexists((spritex + general_playerwidth - 1), spritey + (general_playerheight - 1));

    if (aboveone === true || abovetwo === true) {
        jump = 0;

        if (toblock(spritex, spritey + (general_playerheight - 1)) == 2) {

            removeblockarray(spritex, spritey + (general_playerheight - 1));

            if (mapdrawmethod == "canvas")
                removeblockcanvas(spritex, spritey + (general_playerheight - 1));
            else
                removeblockhtml(spritex, spritey + (general_playerheight - 1));
        }
        if (toblock((spritex + general_playerwidth - 1), spritey + (general_playerheight - 1)) == 2) {

            removeblockarray((spritex + general_playerwidth - 1), spritey + (general_playerheight - 1));

            if (mapdrawmethod == "canvas")
                removeblockcanvas((spritex + general_playerwidth - 1), spritey + (general_playerheight - 1));
            else
                removeblockhtml((spritex + general_playerwidth - 1), spritey + (general_playerheight - 1));
        }
        spritey--;
    }
    else {
        jump++;
        spritey++;

        if (jump > maxjump) {
            jump = 0;
        }
    }
}

if (keyX != 0 || onground == false) {
    if (blockexists(spritex, spritey - 1) === true || (blockexists(spritex + general_playerwidth - 1, spritey - 1) === true)) {
        if (jump == 0)
            onground = true;
    }

    else if (jump == 0) {
        spritey--;
        onground = false;
    }
}

if (blockexists(spritex, spritey, "item") === true || blockexists(spritex + general_playerwidth - 1, spritey, "item") === true || blockexists(spritex, spritey + general_playerheight, "item") === true || blockexists(spritex + general_playerwidth - 1, spritey + general_playerheight, "item") === true) {

    if (toblock(spritex, spritey) == 11) {
        $("#diamcount").html(++general_numdiamonds);
    }
    else if (toblock(spritex + general_playerwidth - 1, spritey) == 11) {
        $("#diamcount").html(++general_numdiamonds);
    }
    if (toblock(spritex, spritey + general_playerheight) == 11) {
        $("#diamcount").html(++general_numdiamonds);
    }
    else if (toblock(spritex + general_playerwidth - 1, spritey + general_playerheight) == 11) {
        $("#diamcount").html(++general_numdiamonds);
    }

    if (toblock(spritex, spritey) == 10 || toblock(spritex + general_playerwidth - 1, spritey) == 10 || toblock(spritex, spritey + general_playerheight) == 10 || toblock(spritex + general_playerwidth - 1, spritey + general_playerheight) == 10) {
        if (keyY == 1) {
            if (general_slowmo > 5) {
                spritey++;
            }

            onground = true;
            jump = 0;
        }
        if (keyY == -1) {
            if (general_slowmo > 5) {
                spritey--;
            }

            onground = true;
            jump = 0;
        }
    }
}


p0x = spritex;
p0y = spritey;
jumpp0 = jump;
keyXp0 = keyX;
keyYp0 = keyY;
ongroundp0 = onground;
}
不管怎样,我想说的是我想听听为什么它这么慢。如果你得到和我一样的结果


可能是因为我把div放在画布上了吧?

我现在使用的是运行Firefox 18.0.2的Mac OS X 10.8.2-它实际上比我的Chrome 25.0.1364.99运行得更快更流畅。只是碰巧,我的Firefox刚刚更新到19.0,看起来仍然很好


确保您没有运行任何可能与游戏中的JS/库冲突的扩展。请禁用Firefox上的所有扩展并再试一次-同时a将帮助您消除速度缓慢的可能原因。

我使用的是运行Firefox 18.0.2的Mac OS X 10.8.2-它实际上比我的Chrome运行得更快、更流畅25.0.1364.99。碰巧,我的Firefox刚刚更新到19.0,看起来仍然很好,很流畅


确保您没有运行任何可能与游戏中的JS/库冲突的扩展。请禁用Firefox上的所有扩展,然后再试一次-a将帮助您消除速度缓慢的可能原因。

如果您使用的是
Firebug
插件,可能就是原因

我的画布在Chrome上运行非常平稳,但在Firefox上运行非常缓慢和滞后。禁用
firebug
后,它在Firefox上运行得更快,甚至比在Chrome上运行得更快


希望这有帮助。

如果您使用的是
Firebug
插件,这可能就是原因

我的画布在Chrome上运行非常平稳,但在Firefox上运行非常缓慢和滞后。禁用
firebug
后,它在Firefox上运行得更快,甚至比在Chrome上运行得更快


希望这能有所帮助。

根据我自己的经验,firefox的canvas实现总是比webkit或ie的慢一点。例如,请参见本页:好的,但就我而言,它不仅慢一点……它的速度非常慢:-(在我的游戏中,那是…实际上我在尝试你的链接,我看不出和chrome有什么大的区别。所以,也许这只是我的游戏,它不喜欢…我可以问一下,你在firefox中的游戏速度超慢吗?在OS X 10.7.5上的firefox 19中运行良好。在chrome和firefox上尝试过(不过我在linux上)而且它似乎在两种浏览器上都运行得很好。可能是windows或您自己的机器出现了问题?门把手为什么这么生气?:-);-)thx用于测试人员:-)根据我自己的经验,firefox的canvas实现总是比webkit或ie的慢一点。例如,请参见本页:好的,但在我的情况下,它不仅慢一点……它的速度非常慢:-(在我的游戏中,那是…实际上我在尝试你的链接,我看不出和chrome有什么大的区别。所以,也许这只是我的游戏,它不喜欢…我可以问一下,你在firefox中的游戏速度超慢吗?在OS X 10.7.5上的firefox 19中运行良好。在chrome和firefox上尝试过(不过我在linux上)而且它似乎在两种浏览器上都运行得很好。可能是windows或您自己的机器出现了问题?门把手为什么这么生气?:-);-)thx用于测试人员:-)我刚刚在Mac OS X 10.6.8上试用过,Chrome 25.0.1364.99肯定比Firefox 21.0a2快。我的Chrome在Firefox非常流行的地方安装了一些扩展,这可以解释为什么。嗯。。。我试图完全重新安装,但没有帮助。但我猜结论一定是firefox不喜欢我的图形卡或其他东西,因为gpu加速了它。我试图禁用硬件加速,但实际上它似乎运行得快了一点。不过还是超级滞后。但是thx需要帮助。。。至少很高兴知道你们可以运行它…我刚刚在Mac OS X 10.6.8上试用过,Chrome 25.0.1364.99肯定比Firefox 21.0a2快。我的Chrome有一些扩展,因为我的Firefox很有库存-这可以解释为什么。嗯。。。我试图完全重新安装,但没有帮助。但我猜结论一定是firefox不喜欢我的图形卡或其他东西,因为gpu加速了它。我试图禁用硬件加速,但实际上它似乎运行得快了一点。不过还是超级滞后。但是thx需要帮助。。。至少很高兴知道你们可以运行它。。。