1.4 clear - nếu ko clear sẽ để lại vết của những chuyển động cũ

 


Demo : https://www.lenlop123.com/2020/09/14-clear-neu-ko-clear-se-e-lai-vet-cua.html

<!DOCTYPE html>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<style>
    canvas {
        border: 1px solid #d3d3d3;
        background-color: #f1f1f1;
    }
</style>

<div>
    <canvas id="canvas" class="canvas"></canvas>
</div>

<script>

    var myGamePiece;

    // hàm onload sẽ chạy sau cùng, sau khi load đủ dữ liệu
    window.onload = function () {
        startGame()
    };

    function startGame() {
        myGameArea.start();     // khởi tạo canvas
        myGamePiece = new component(30, 30, "red", 10, 120);    // vẽ 1 component    


    }

    var myGameArea = {
        canvas: document.getElementById('canvas'),
        start: function () {
            this.canvas.width = 480;                        // Lấy thẻ HTML Canvas
            this.canvas.height = 270;
            this.context = this.canvas.getContext("2d");    // Vẽ ở mô hình 2D            
            this.interval = setInterval(updateGameArea, 20);    // 20 mili giây cập nhật lại 1 lần
        },
        clear: function () {
            // xóa toàn bộ canvas
            this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);
        }
    }


    function component(width, height, color, x, y) {
        // khai báo kích thước - vị trí
        this.width = width;
        this.height = height;        
        this.x = x;
        this.y = y;

        //hàm được gọi để chạy real time
        this.update = function () {
            ctx = myGameArea.context;
            ctx.fillStyle = color;            
            ctx.fillRect(this.x, this.y, this.width, this.height);      // vẽ component là 1 hình chũ nhật
        }
    }

    // Frames - To make the game ready for action, we will update the display 50 times per second, which is much like frames in a movie.
    function updateGameArea() {
        // myGameArea.clear();  // nếu ko clear sẽ để lại vết của những chuyển động cũ
       
        myGamePiece.x +=1;      // tăng x, để di chuyển ngang
        myGamePiece.update();
    }
</script>

Nhận xét