Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

223
Vistas
¿Cómo eliminar addEventListener al saltar entre fotogramas en Animate CC HTML5 Canvas?

Parece que tengo problemas para eliminar addEventListeners cuando salto entre fotogramas. Cuando salto de un lado a otro, los addEventListeners todavía parecen acumularse:

ingrese la descripción de la imagen aquí

Código del cuadro 1:

 this.stop(); this.arrowForward_btn.addEventListener("click", arrow_btnClickForward.bind(this)); function arrow_btnClickForward() { this.arrowForward_btn.removeEventListener("click", arrow_btnClickForward.bind(this)); console.log("went forward"); alert("alert: went forward!"); this.gotoAndStop(1); }

Código del cuadro 2:

 this.arrowBack_btn.addEventListener("click", arrow_btnClickBack.bind(this)); function arrow_btnClickBack() { this.arrowBack_btn.removeEventListener("click", arrow_btnClickBack.bind(this)); console.log("went back!"); alert("alert: went back!"); this.gotoAndStop(0); }

¿Cómo elimino los addEventListeners para que no se acumulen?


Actualización: Me dijeron acerca de evt.remove(); así que usé eso en mis códigos y funciona:

Código del cuadro 1:

 this.stop(); this.arrowForward_btn.addEventListener("click", arrow_btnClickForward.bind(this)); function arrow_btnClickForward() { console.log("went forward"); alert("alert: went forward!"); this.gotoAndStop(1); evt.remove(); }

Código del cuadro 2:

 this.arrowBack_btn.addEventListener("click", arrow_btnClickBack.bind(this)); function arrow_btnClickBack(evt) { console.log("went back!"); alert("alert: went back!"); this.gotoAndStop(0); evt.remove(); }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Su actualización es mejor , pero podría ayudar a explicar algunas cosas:

  • Cuando usa bind() , genera un nuevo cierre único. Cada vez.
  • Debe usar este cierre exacto cuando elimine el evento. Generar otro, incluso con los mismos parámetros, no funcionará.

Tenga en cuenta que evt.remove() debería funcionar para usted, pero en su primer ejemplo (código del marco 1), el controlador de eventos no tiene un evt .

Algunas cosas en CreateJS podrían ayudar:

  1. El método on() es un atajo para addEventListener, que lo ayuda a hacer cosas como pasar el alcance
 this.arrowForward_btn.on("click", arrow_btnClickForward, this);
  1. También tiene un parámetro de una once , por lo que si sabe que su evento se activará una vez, puede eliminarse automáticamente.
 this.arrowForward_btn.on("click", arrow_btnClickForward, this, true);
  1. Si aún desea administrar manualmente, on() devuelve el cierre generado. Puede usar off() para eliminar fácilmente.
 var handler = this.arrowForward_btn.on("click", arrow_btnClickForward, this); // later this.arrowForward.off("click", handler);

Con suerte, eso le brinda una mejor comprensión de los controladores de eventos en CreateJS, y alguna combinación de eso funcionará.

--

También puede ser útil saber que puede escribir todo su código en el primer cuadro, ya que CreateJS arranca instancias en cada cuadro cuando se inicializa el movieclip. Entonces arrowBack_btn también existirá en el marco 1. Solo puede agregar el código una vez y asegurarse de que solo se ejecute

 if (this.inited == false) { this.inited = true; this.arrowForward_btn.on("click", arrow_btnClickForward, this); this.arrowBack_btn.on("click", arrow_btnClickBack, this); function arrow_btnClickForward() { console.log("went forward"); alert("alert: went forward!"); this.gotoAndStop(1); } function arrow_btnClickBack(evt) { console.log("went back!"); alert("alert: went back!"); this.gotoAndStop(0); } }

No probé esto, pero debería funcionar :D

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda