为了账号安全,请及时绑定邮箱和手机立即绑定

如何阻止我的拖尾线导致对象因数组大小而变慢

如何阻止我的拖尾线导致对象因数组大小而变慢

隔江千里 2021-06-01 13:00:47
随着数组变大,我在画布上的方形对象会急剧变慢。该数组用于存储先前的 x,y 位置,然后拖尾线使用这些位置来绘制自身。有没有办法让我的对象以相同的速度移动,同时保持整个拖尾线,即我不希望拖尾线在任何时间点消失/消失。<!DOCTYPE html><html><head><meta name="viewport" content="width=device-width, initial-scale=1.0"/><style>canvas {    border:1px solid #d3d3d3;    background-color: #f1f1f1;}</style></head><body onload="startGame()"><script>var myGamePiece;var myArrayX = [];var myArrayY = [];function startGame() {    myGamePiece = new component(30, 30, "red", 10, 120);    myGameArea.start();}var myGameArea = {    canvas : document.createElement("canvas"),    start : function() {        this.canvas.width = 480;        this.canvas.height = 270;        this.context = this.canvas.getContext("2d");        document.body.insertBefore(this.canvas, document.body.childNodes[0]);        this.interval = setInterval(updateGameArea, 20);    },    clear : function() {        this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);    }    }function component(width, height, color, x, y) {    this.width = width;    this.height = height;    this.speedX = 0;    this.speedY = 0;    this.x = x;    this.y = y;        this.update = function() {        ctx = myGameArea.context;        ctx.fillStyle = color;        ctx.fillRect(this.x, this.y, this.width, this.height);         // testing:    ctx.beginPath();    ctx.strokeStyle = "red";    ctx.setLineDash([5,5]);    ctx.moveTo(10, 120);    var arrLength = myArrayX.length;    for(var i=0; i<arrLength;i+=1){    ctx.lineTo(myArrayX[i], myArrayY[i]);    ctx.stroke();    }    }    this.newPos = function() {        this.x += this.speedX;        this.y += this.speedY;          myArrayX.push(this.x);        myArrayY.push(this.y);    }       //end test}function updateGameArea() {    myGameArea.clear();    myGamePiece.newPos();        myGamePiece.update();    document.getElementById("test").innerHTML = "size of array: " + (myArrayX.length -1).toString()}
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 117 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信