Javascript 如何提高my js游戏的性能
几天前我开始学习javascript,并完成了codeacadmey的工作,我想我会尝试制作一个简单的游戏 所以我想出了一个记忆游戏,你必须找到成对的图像 这一切都在起作用,我有一个评分系统,但有几个人说,一旦选择了另一张巧克力卡,就会出现延迟,这阻碍了他们,我想不出如何提高表现 这里有一段代码我认为是造成延迟的原因,有没有更好的方法来产生相同的结果,在我还没熟悉这一切之前,很抱歉Javascript 如何提高my js游戏的性能,javascript,performance,Javascript,Performance,几天前我开始学习javascript,并完成了codeacadmey的工作,我想我会尝试制作一个简单的游戏 所以我想出了一个记忆游戏,你必须找到成对的图像 这一切都在起作用,我有一个评分系统,但有几个人说,一旦选择了另一张巧克力卡,就会出现延迟,这阻碍了他们,我想不出如何提高表现 这里有一段代码我认为是造成延迟的原因,有没有更好的方法来产生相同的结果,在我还没熟悉这一切之前,很抱歉 function check() { clearInterval(tid); if(p
function check() {
clearInterval(tid);
if(people[secondchocie] === people[firstchocie]) {
cntr++;
(cntr === numOfMatches) {
stop();
score = checkScore(amountGoes);
$('#gameFinished').append('<p>Well done, you managed to complete the game your score is <span>' + score + '</span></p>');
}
turns = 0;
return;
} else {
document.images[firstchocie + numOfImages].src = backcard;
document.images[secondchocie + numOfImages].src = backcard;
turns = 0;
return;
}
}
函数检查(){
净空时间间隔(tid);
如果(人[第二个巧克力]==人[第一个巧克力]){
cntr++;
(cntr==numOfMatches){
停止();
分数=检查分数(数量);
$(“#gameFinished”)。追加(“做得好,您成功完成了游戏您的分数为“+score+””);
}
匝数=0;
返回;
}否则{
document.images[firstchocie+numOfImages].src=backcard;
document.images[secondchocie+numOfImages].src=backcard;
匝数=0;
返回;
}
}
我无法创建注释,因此我将把它放在回答中
虽然我同意卢卡斯·普肯尼斯的观点
如果未预加载图像,则更改图像可能需要一些时间。要测试这一点:在开始游戏之前,尝试将它们添加到页面中的其他位置(即使用IMG标记),以将它们放入浏览器缓存中
然后你会确定它们在缓存中
编辑:
我最近用了这个:
var cache = [];
function preLoadImages(arrImg)
{
var args_len = arrImg.length;
for (var i = args_len; i--;)
{
var cacheImage = document.createElement('img');
cacheImage.src = arrImg[i];
cache.push(cacheImage);
}
}
preLoadImages(['images/img1.png','images/img2.png','images/img3.png',]);
您可以将所需的所有图像添加到javascript数组中
如果您需要快速学习:),您可以执行以下操作:
如果您的页面是由php生成的,您可以让php读取整个图像目录,并将文件名作为javascript代码写入页面中。
或者您可以创建一个ajax请求,它返回图像的所有路径,并将它们作为回调发送到预加载函数。转到jsfiddle.net,在那里创建您的游戏,然后给我们一个链接。你的代码似乎有点奇怪。例如(ctr==numOfMatches)或stop()函数。请提供所有的代码,人们会很快帮助您:)此代码不会导致延迟。大部分在正常的游戏过程中不会执行(仅在游戏结束时),其余的只是
clearTimeout
(应该很快)一个属性查找和比较(假设没有getter的话,应该非常快)。如果你演示了如何预加载图像,你可以将此作为一个答案;-)非常感谢,很抱歉,我下次会用fiddle来布置代码