[英]How would I void a called function within an event Handler function from running once a condition is met in JavaScript?
I am working on an assignment for school and have it working.我正在为学校做作业并让它发挥作用。 The Goal was to render Pokémon to the page and have the ball shake as if something was trying to pop out of it.
目标是将神奇宝贝渲染到页面并让球摇晃,好像有什么东西试图从里面弹出一样。 I have the images shaking but am not sure how to make it STOP once the final image is reached with what I have so far:
我的图像在晃动,但我不确定如何在达到最终图像后停止它:
class Eevee extends Pokemon { constructor (evolutionPath, evolutionStage) { super (evolutionPath = [ "images/pokeball.png", "images/eevee/eevee0.png", "images/eevee/eevee1.png", "images/eevee/eevee2.png", "images/eevee/eevee3.png", "images/eevee/eevee4.png", "images/eevee/eevee5.png", "images/eevee/eevee6.png", "images/eevee/eevee7.png", "images/eevee/eevee8.png" ], evolutionStage) this.evolutionStage = 0 } evolve = function () { main.append(this.image) this.image.setAttribute(`src`, `${this.evolutionPath[0]}`) this.image.addEventListener("click", function () { this.toggleShake(this.image) let evolveChance = Math.floor(Math.random( ) * 5 + 1) if (evolveChance === 1){ if (this.evolutionStage === 0){ this.evolutionStage = 1 this.image.setAttribute(`src`, `${this.evolutionPath[this.evolutionStage]}`) this.evolutionStage = Math.floor(Math.random() * ((this.evolutionPath.length)- 2) + 1) return this.image } else if (this.evolutionStage <= this.evolutionPath.length - 1 && this.evolutionStage >= 2){ this.image.setAttribute(`src`, `${this.evolutionPath[this.evolutionStage]}`) return this.image } }}.bind(this)) }.bind(this) } let eeveeA = new Eevee () eeveeA.evolve()
I was able to refactor my previous if statement and get it to work:我能够重构我以前的 if 语句并让它工作:
evolve = function () { main.append(this.image) this.image.setAttribute( src
, ${this.evolutionPath[this.evolutionStage]}
) this.image.addEventListener("click", function () {进化=函数(){ main.append(this.image)this.image.setAttribute(
src
, ${this.evolutionPath[this.evolutionStage]}
)this.image.addEventListener(“点击”,函数(){
let evolveChance = Math.floor(Math.random( ) * 5 + 1)
***if(this.evolutionStage === 0 || this.evolutionStage === 1) {
this.toggleShake(this.image)
}***
if (evolveChance === 1){
if (this.evolutionStage === 0){
this.evolutionStage = 1
this.image.setAttribute(`src`, `${this.evolutionPath[this.evolutionStage]}`)
this.evolutionStage = Math.floor(Math.random() * ((this.evolutionPath.length)- 1) + 2)
return this.image
} else if (this.evolutionStage <= this.evolutionPath.length - 1 && this.evolutionStage >= 2){
this.image.setAttribute(`src`, `${this.evolutionPath[this.evolutionStage]}`)
return this.image
}
}}.bind(this))
}.bind(this) } }.bind(这个) }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.