2013-03-07 103 views
0

我正在做一個風箏遊戲..HTML5 canvas如何給它一個邊界?

我是一個總的javascript noob,我真的需要一些幫助。

所以我在這一點,我有一個圖像按下箭頭按鈕移動。 現在的問題是,我的形象可以走出畫布,我不想要它..

我真的沒有想法如何做到這一點我已經嘗試了多個教程,但它似乎並沒有工作。

window.onload = function() { 

var canvas = document.getElementById("game"); 
window.addEventListener('keydown', keyDown, true); 

var context = canvas.getContext("2d"); 
var kite = document.getElementById("kite"); 

var kite = new Image(); 
kite.src = "kite.png"; 

context.drawImage(kite, 250, 300, 300, 150); 

var x = 250; 
var y = 300; 

function keyDown(e){ 

// up 
    if (e.keyCode == 38) { 
     clearCanvas(); 
     y = y - 3; 
     context.drawImage(kite, x, y, 300, 150);  
    } 

// down 
    if (e.keyCode == 40) { 
     clearCanvas(); 
     y = y + 3; 
     context.drawImage(kite, x, y, 300, 150); 
    } 

// left 
    if (e.keyCode == 37) { 
     clearCanvas(); 
     x = x - 10; 
     context.drawImage(kite, x, y, 300, 150); 
    } 

// right 
    if (e.keyCode == 39) { 
     clearCanvas(); 
     x = x + 10; 
     context.drawImage(kite, x, y, 300, 150); 
    } 

} 

function clearCanvas() { 
    canvas.width = canvas.width; 
} 



}; 

我真的很感激,如果有人可以幫助我:d

回答

2

你需要做沿着這些線路的每一次按鍵的東西,你調整xy變量。注意新的if聲明:

// up 
if (e.keyCode == 38) { 
    clearCanvas(); 
    if (y - 3 > 0) { 
     y = y - 3; 
    } 
    context.drawImage(kite, x, y, 300, 150);  
} 

// down 
if (e.keyCode == 40) { 
    clearCanvas(); 
    if (y + 3 + 150 < canvas.height) { 
     y = y + 3; 
    } 
    context.drawImage(kite, x, y, 300, 150); 
} 

// left 
if (e.keyCode == 37) { 
    clearCanvas(); 
    if (x - 10 > 0) { 
     x = x - 10; 
    } 
    context.drawImage(kite, x, y, 300, 150); 
} 

// right 
if (e.keyCode == 39) { 
    clearCanvas(); 
    if (x + 10 + 300 < canvas.width) { 
     x = x + 10; 
    } 
    context.drawImage(kite, x, y, 300, 150); 
} 
+0

感謝它的工作原理! 但只爲左和頂部,它仍然從右側和底部的畫布出來,我填充的寬度和高度就像你的例子,但它似乎並不工作。左側確實有效! – 2013-03-07 22:41:41

+0

查看我對右側和底部if語句所作的編輯。我添加了正在繪製的圖像的寬度和高度(因爲x/y代表圖像左上角的位置) – 2013-03-08 03:29:51

+0

呃,該死的移動瀏覽器將我的< and >更改爲lt和gt – 2013-03-08 03:31:42