2013-04-25 78 views
0

我是新的畫布。我是一名正在開發帆布賽跑運動員的學生。我有功能jump(),這是在發生事件時調用的;HTML5遊戲跳轉()函數無法正常工作

function jump(){ 
    img= new Image(); 
    //is_jump=1; 
    h.clearRect(20,430,170,250); 
    img.onload= function(){ 
     //h.drawImage(img,mx,my,190,280,120,410,190,350); 
     h.drawImage(img,mx,my,190,350); 
     //mX--; 
     //mY--; 
    } 
    img.src= "mario-Copy.png"; 
    h.clearRect(mx,my,190,350); 
    //for(i=mx;i<130;i+=7) 
    //{ 
    if(mx<110&&my<480){ 
     mx=(mx+5); 
     my=(my-15); 
     //setTimeout(h.drawImage(img,mx,my,190,350),100000/5); 
     h.drawImage(img,mx,my,190,350); 
    }else{ 
     mx=60; 
     my=410; 
    } 
} 

的問題是,跳躍的字符不能正常工作,它跳慢點,不要清除以前的跳躍狀態圖像,而前進。

所以幫助我,讓我的動畫正常順利地運作。

目標是通過點擊使角色跳躍。

+4

有了互動內容/遊戲,發佈一個簡單的代碼片段(它可以自己運行)幾乎是最好的辦法(http://sscce.org)。如果我們無法爲一般場景重現此問題,則可能是本地化的問題。但是對於其中之一,你不應該爲每次跳轉加載'mario-Copy'。而是加載圖像_once_並重新使用它。 – Zeta 2013-04-25 10:45:47

+0

你能否解釋各種魔法數字(如190和350)在你的代碼中的重要性?最好的做法是[用一個明顯命名的常量代替那些實際表示數字的意思](http://www.refactoring.com/catalog/replaceMagicNumberWithSymbolicConstant.html)。魔法數字[你的代碼不好](http://stackoverflow.com/q/47882/254830)。 – doppelgreener 2013-04-26 02:26:47

+0

@Jonathan Hobbs,「190和350」是指跑步者字符的寬度和高度,在上面的代碼中h.clearRect(20,430,170,250);意思是h.clearRect(x,y,w,h); mx表示跑步者的x軸,我的意思是他的y軸。 – 2013-09-05 21:45:22

回答

0

我認爲問題在於你正在清理和重畫同一個跳轉函數。我會做的是創建一個單獨的繪製()和清除()並把它們放在一個setinterval並讓它運行。然後,所有的跳轉函數都需要更新對象的位置,您可以直接通過跳轉()來改變位置,或者在繪製之前使用單獨的update()函數來編輯這些值。

相關問題