2013-01-31 28 views
0

我已經開始在幾天前學習javascript並完成codeacadmey的東西,並認爲我會嘗試做一個簡單的遊戲。如何提高性能o我的js遊戲

所以我想出了記憶遊戲,你必須找到對圖像。

這是所有的工作,我得到了一個評分系統,但有幾個人說,一旦卡被選中,讓另一個巧克力阻礙他們,我不知道如何提高性能發生延遲。

這裏有一段代碼,我認爲是造成延遲,有沒有更好的方法來產生相同的結果,遺憾的是我對所有這一切都是陌生的。

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; 

       } 

     } 
+1

轉到jsfiddle.net並在那裏創建你的遊戲,然後給我們一個鏈接。你的代碼看起來有點奇怪。例如(ctr === numOfMatches)或stop()函數。請提供所有代碼,突然人們將能夠快速幫助您:) –

+0

此代碼不會導致延遲。它大部分在正常遊戲過程中不會被執行(只在最後),其餘的只是'clearTimeout'(它應該是快速的)屬性查找和比較(如果沒有獲取者,它應該是超快速的在方式)。 –

回答

0

我不能創建評論,所以我會把它放在一個答案。

雖然我lukas.pukenis同意...

更改圖像可能需要一些時間,如果他們不預裝。測試這個:嘗試在開始遊戲之前將它們添加到瀏覽器緩存中,並將它們添加到頁面中的其他位置(即使用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請求,它將返回圖像的所有路徑並將它們作爲回調函數發送到預加載函數。

+0

如果您演示如何預加載圖像,您可以保留這個作爲答案;-) –

+0

非常感謝你和對我下次將使用小提琴的代碼佈局感到抱歉 – Space87

+0

我們在這裏學習和幫助;) 我希望這有幫助。 – Rembunator