类javascript画布中的线条旋转

文森特·波登


我尝试创建一个带有函数的类,该函数可能用于更改已绘制的线的角度。
我写的东西,线不动。当我按向右或向左键时,出现此错误:

类型错误:this.changeAngle 不是函数

确实,我的代码中没有“function”关键字……我不知道用什么来代替。


你可以帮帮我吗 ?
非常感谢你。

window.onload = init;

let canvas, ctx;
let mousePos;
let angle = 0;


class Lanceur {
  constructor() {    
    this.changeAngle(this.angle);
  }

  update(ctx) {
    this.drawAiguille(ctx);
  }

  drawSocleLanceur(ctx) {
    ctx.save();
    ctx.beginPath();
    ctx.lineWidth = 2;
    ctx.arc(w/2, h, 20, 0, 2 * Math.PI);
    ctx.stroke();
    ctx.restore();
}

  drawAiguille(ctx) {
    ctx.save();
    ctx.rotate(this.angle);
    ctx.strokeStyle = "rgb(255, 0, 0)";
    ctx.lineWidth=3;
    ctx.beginPath();
    ctx.moveTo(w/2, h-h*0.12);
    ctx.lineTo(w/2, h-h*0.035);
    ctx.stroke();
    ctx.restore();
  }


  changeAngle(a) {
      this.angle =  a;
  }

  getAngle() {
      return this.angle;
  }

}

function init() {
  canvas = document.querySelector("#jeu");
  ctx = canvas.getContext("2d");

  w = canvas.width;
  h = canvas.height;

  a = new Lanceur();
      requestAnimationFrame(mainloop);
  }

function mainloop() {
  ctx.clearRect(0, 0, w, h);
  a.update(ctx);
  requestAnimationFrame(mainloop);
}

document.addEventListener('keypress',  function(event){
    gereTouches(event);
});


function gereTouches(event) {
  if(event.key == "ArrowRight") {
    this.changeAngle(this.getAngle - 1);
      console.log("ça bouge : " + this.angle);
  }else if(event.key == "ArrowLeft") {
    this.changeAngle(this.getAngle + 1);
}
}
恩克萨内塔

主要变化:

  • 将 this.angle 添加到 thr 构造函数()
  • 使用keydown事件
  • 函数 gereTouches(event) 使用a代替thisa.getAngle()代替a.getAngle
  • 角度也为 1 太大(那些是弧度)。我正在使用 .01 代替。

我希望它有帮助。

window.onload = init;

let canvas, ctx;
let mousePos;
let angle = 0;


class Lanceur {
  constructor() { 
    this.angle = 0;
    this.changeAngle(this.angle);
  }

  update(ctx) {
    this.drawAiguille(ctx);
  }

  drawSocleLanceur(ctx) {
    ctx.save();
    ctx.beginPath();
    ctx.lineWidth = 2;
    ctx.arc(w/2, h, 20, 0, 2 * Math.PI);
    ctx.stroke();
    ctx.restore();
}

  drawAiguille(ctx) {
    ctx.save();
    ctx.rotate(this.angle);
    ctx.strokeStyle = "rgb(255, 0, 0)";
    ctx.lineWidth=3;
    ctx.beginPath();
    ctx.moveTo(w/2, h-h*0.12);
    ctx.lineTo(w/2, h-h*0.035);
    ctx.stroke();
    ctx.restore();
  }


  changeAngle(a) {
      this.angle =  a;
  }

  getAngle() {
      return this.angle;
  }

}

function init() {
  canvas = document.querySelector("#jeu");
  ctx = canvas.getContext("2d");

  w = canvas.width = 500;
  h = canvas.height = 500;

  a = new Lanceur();
  requestAnimationFrame(mainloop);
  }

function mainloop() {
  ctx.clearRect(0, 0, w, h);
  a.update(ctx);
  requestAnimationFrame(mainloop);
}

document.addEventListener('keydown',  function(event){
  
    gereTouches(event);
});


function gereTouches(event) {
  if(event.key == "ArrowRight") {
    a.changeAngle(a.getAngle() - .01);
      console.log("ça bouge : " + a.angle);
  }else if(event.key == "ArrowLeft") {
    a.changeAngle(a.getAngle() + .01);
}
}
canvas{border:1px solid}
<canvas id="jeu"></canvas>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用鼠标旋转画布中的图像

来自分类Dev

画布旋转

来自分类Dev

JavaScript画布-矩形围绕圆旋转

来自分类Dev

在画布中旋转多个文本

来自分类Dev

检测旋转的矩形是否在画布弧中

来自分类Dev

在画布中旋转图像

来自分类Dev

旋转渐变在WPF中退出画布

来自分类Dev

如何在XAML画布中绘制随机/不规则线条?

来自分类Dev

旋转画布中的单个对象?

来自分类Dev

Android中的多点触控画布旋转

来自分类Dev

画布旋转时Javascript查找像素

来自分类Dev

在HTML画布中旋转点

来自分类Dev

如何在javascript中仅旋转画布的一部分?

来自分类Dev

在画布中旋转文字

来自分类Dev

使用JavaScript旋转画布中的文本

来自分类Dev

调整图像大小,然后在画布中旋转-javascript

来自分类Dev

画布中的HTML / Javascript绘制弧不起作用-矩形/线条很好

来自分类Dev

在Tkinter画布中旋转线

来自分类Dev

继续在HTML画布中绘制线条

来自分类Dev

在画布中旋转精灵

来自分类Dev

在画布中旋转图像

来自分类Dev

旋转画布中的单个对象?

来自分类Dev

画布旋转时Javascript查找像素

来自分类Dev

Delphi在画布上的PlotGrid中绘制线条

来自分类Dev

如何从画布中检测线条并在 WPF 中删除线条

来自分类Dev

仅旋转画布中的图像

来自分类Dev

Javascript画布使用算法绘制线条奇怪的行为

来自分类Dev

在 Tkinter 画布中绘制的线条的饱和度

来自分类Dev

画布线条清除并从数组中重新绘制