【问题标题】:HTML5 canvas how to give it a boundary?HTML5画布如何给它一个边界?
【发布时间】:2013-02-23 08:25:02
【问题描述】:

为了学校作业,我正在制作风筝游戏..

我是一个 JavaScript 新手,我真的需要一些帮助。

所以我现在可以通过按箭头按钮来移动图像。 现在的问题是我的图像可以超出画布,我不希望它..

我真的不知道如何做到这一点,我尝试了多个教程,但它似乎不起作用。

 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

【问题讨论】:

    标签: javascript html canvas boundary


    【解决方案1】:

    您需要为每个 keyStroke 执行这些操作,在其中调整 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);
    }
    

    【讨论】:

    • 感谢它的工作!但仅对于左侧和顶部,它仍然超出右侧和底部的画布,我像您的示例一样填写了宽度和高度,但它似乎不起作用.. 真的很高兴顶部和左侧确实有效!
    • 查看我对 if 语句的右侧和底部所做的编辑。我将您正在绘制的图像的宽度和高度添加到条件中(因为 x/y 代表图像左上角的位置)
    • 呃,该死的移动浏览器将我的 更改为 lt 和 gt
    猜你喜欢
    • 2022-01-24
    • 1970-01-01
    • 2023-02-11
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多