javascript - 事件监听器只设置一次间隔,但每次都运行其他函数
问题描述
请参阅此代码:
function handleTouchStart(event) {
event.preventDefault();
cnvs.removeEventListener("touchstart", handleTouchStart);
var x1 = event.touches[0].clientX-cnvs.offsetLeft;
callerOfCNVSTouchStart = setInterval(function () {
if (x1 > cnvs.width/2 && whiteShip.x2 < cnvs.width) {
whiteShip.x1+= 3;
} else if (x1 < cnvs.width/2 && whiteShip.x1 > 0) {
whiteShip.x1-= 3;
}
}, 20);
nBMC = setInterval(makeNewBullets,200);
setInterval(sendEnemies,2000);//I want to run this line only once
}
我希望每次事件发生时都运行其他函数,但sendEnemies
只设置一次间隔。我怎样才能做到这一点?
解决方案
使用var sentEnemies = false;
外部函数之类的变量handleTouchStart
,并在函数中将其更新为true
第一次,并if(!sentEnemies)
用于该行仅执行一次。
var sentEnemies = false;
function handleTouchStart(event) {
event.preventDefault();
cnvs.removeEventListener("touchstart", handleTouchStart);
var x1 = event.touches[0].clientX-cnvs.offsetLeft;
callerOfCNVSTouchStart = setInterval(function () {
if (x1 > cnvs.width/2 && whiteShip.x2 < cnvs.width) {
whiteShip.x1+= 3;
} else if (x1 < cnvs.width/2 && whiteShip.x1 > 0) {
whiteShip.x1-= 3;
}
}, 20);
nBMC = setInterval(makeNewBullets,200);
if (!sentEnemies) {
setInterval(sendEnemies,2000); // Will execute only once
sentEnemies = true;
}
}
推荐阅读
- python - 绘制一维数据的 KMeans 聚类和分类
- javascript - FATAL ERROR 语法错误,意外的 '<',预计文件在第 1 行结束
- python - 使用按钮 tkinter 更改画布对象的颜色
- magento - Magento 1.9 cron 正在运行,但在一种方法上停止
- sqlite - 无法在 React-Native 中通过 RecyclerListView 显示 SQLite 表
- ionic-framework - 如何在 Ionic 中为“INR”货币运行我的 PayPal 代码
- python - Python 3:为什么循环比递归快?
- kubernetes - Kubernetes 丢失了 ~/.kube/config
- node.js - Express:会话秘密
- c - 如何在 ac 函数中返回通用指针?