簡體   English   中英

停止動畫元素離開畫布

[英]Stop animated element leaving the canvas

我試圖阻止元素離開畫布。 這是否重置循環,還是只是阻止循環進一步進行-我不確定。 防止元素離開畫布的常用方法是什么?

我有以下代碼:

http://jsfiddle.net/tmyie/R5wx8/2/

var canvas = document.getElementById('canvas'),
    c = canvas.getContext('2d'),
     x = 10,
        y = 15;
function move() {
   c.clearRect(0, 0, 500, 300);
    c.fillRect(x, y, 5, 5),
    c.fillRect(x, y, 15, 15);
    x++;
    y++;
}

setInterval(move, 300);

您需要使用一個條件:

function move() {
    c.clearRect(0, 0, 500, 300);
    c.fillRect(x, y, 5, 5),
    c.fillRect(x, y, 15, 15);
    if (x < canvas.width - 10) x++;  /// 10 being an arbitrary value
    if (y < canvas.height - 10) y++;
}

重置循環的方法相同:

x++;
if (x > canvas.width) x = 0;

該示例中的任意值是作為實際對象寬度的占位符,您需要基於對象的實際尺寸。

您正在尋找的方法稱為“沖突檢測” Wiki

基本上,它涉及一些計算。 您將必須知道該對象可能與之碰撞的區域的邊界。

您還將確保計算對象的大小。

如果對象的位置及其大小大於邊界的位置,則發生了碰撞。 通常,通過反轉動畫方向來產生“反彈”效果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM