Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

170
Visualizações
Estructuración adecuada de JS/TS: dibujo de lienzo de la clase, sin que la clase "sabe" sobre el lienzo

Tengo una clase principal, que tiene un <canvas> y una propiedad de tool .
(escrito en mecanografiado):

 class CanvasHandler { canvas: HTMLCanvasElement; tool: Tool; constructor(canvas: HTMLCanvasElement, tool: Tool) { this.canvas = canvas; this.tool = tool; } }

La tool será una instancia de la clase Pen , que extiende Tool :

 interface IPen { size: number; color: string; } class Pen extends Tool implements IPen { size: number; color: string; constructor(size: number, color: string) { super(ToolNames.PEN, ToolDescriptions.PEN); this.size = size; this.color = color; } override onMouseMove(event: Event) { // DRAW CIRCLE TO CANVAS } }

Implementé un Observer en el <canvas> -Element, por lo que ahora cada vez que el mouse se mueve sobre el lienzo, se ejecuta el método onMouseMove de CanvasHandler.tool . Ahora, cada vez que se llama a la función onMouseMove , quiero dibujar un círculo en <canvas> . Podría proporcionar una referencia al <canvas> , para que la clase Tool "conozca" el <canvas> , y 'onMouseMove' podría anular el comportamiento de dibujo en Pen . Sin embargo, me pregunto, si no hay una mejor manera, de reubicar la funcionalidad de dibujo, de modo que la clase Pen y Tool no "sepan" directamente sobre el elemento <canvas> .

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda