• 在JavaScript中,为什么我们在用定时器控制某一元素移动时,有时会出现元素越走越快的现象


    当我们在用定时器时(setinterval),如果我们不清定时器,它会不停的运转下去。有人会问,我只命名了一个定时器的名字,在重新调用这个定时器名字时,这个定时器应该重新开始啊,其实不是这样的。当我们在启动一个定时器时,电脑会为我们开启一个定时器,当我们再次用同一个名字开启定时器时,电脑会再开另外开启一个定时器,与先前开启的定时器无关,我们所谓的定时器的名字,它只是一个变量而已,并不是定时器的名字,它的功能是清定时器用的,也就是通过clearInterval(变量)使定时器停止运行。代码实例如下:

    下面是一个用键盘控制元素head走的一个函数

    var timer;

    function keyContMove(flag){

    //在调用定制器时,首先要清定时器,如果没有这条语句的话,每次按键时都会调用此函数从而另开一个定时器,这样就会使head元素越走越快
    clearInterval(timer);
    timer=setInterval(function(){
    if (flag) {

    //speedY是y轴方向的速度,speedX是x轴方向上的速度
    top+=speedY;
    head.style.top=top+'px';
    }else {
    left+=speedX;
    head.style.left=left+'px';
    }

    },16)
    }

    切记程序里的timer是定时器的返回值,不是定时器的名字!!!

  • 相关阅读:
    spark学习进度11(RDD分区和我shuffle以及缓存)
    spark学习进度10(阶段练习)
    gradle体验笔记
    git 进阶命令
    git 基础命令
    看日记学git--笔记
    git的objects目录
    macos中gitk报错
    第5章 迪米特法则(最少知知识原则)
    操作系统概念 第9版
  • 原文地址:https://www.cnblogs.com/yanchao-paul/p/5432771.html
Copyright © 2020-2023  润新知