首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当用户在画布上悬停时创建动画

当用户在画布上悬停时创建动画
EN

Stack Overflow用户
提问于 2016-09-30 14:44:38
回答 1查看 42关注 0票数 1

当用户在画布上悬停时,我试图添加图像和动画,一旦用户将鼠标移出画布,我想阻止新的图像出现。

为了实现这一点,我尝试在新图像上设置一个间隔,以每100 an触发一次,然后如果用户将鼠标移出画布,则此函数将停止触发。

代码语言:javascript
复制
canvas.addEventListener("mouseover", setInterval(newImage, 100), false);
canvas.addEventListener("mouseout", clearInterval(newImage), false);

下面的JS代码

代码语言:javascript
复制
  //gets canvas element
  var canvas = document.getElementById('canvas');
  var ctx = canvas.getContext('2d');
  canvas.width = window.innerWidth;
  canvas.height = window.innerHeight;

  function newImage() {

    //random position on the canvas
    var randomPosition = parseInt(Math.random() * window.innerWidth);

    var images = [
      'http://www.convoy.me/image/landing/Scratcher.png',
      'http://www.convoy.me/image/landing/push_harder_0006.png'
    ];

    var y = window.innerHeight;

    //selects a random image
    var randomImage = parseInt(Math.random() * images.length);

    //IIFE draw
    (function draw() {
      var imageObj = new Image();
      imageObj.onload = function() {

        ctx.clearRect(randomPosition - imageObj.width, y, imageObj.width, imageObj.height);

        y -= 10;

        ctx.drawImage(imageObj, randomPosition - imageObj.width, y, imageObj.width, imageObj.height);

        if (y > -imageObj.height) {
          requestAnimationFrame(draw)
        }
      };
      imageObj.src = images[randomImage];
    })();
  }

  canvas.addEventListener("mouseover", setInterval(newImage, 100), false);
  canvas.addEventListener("mouseout", clearInterval(newImage), false);
代码语言:javascript
复制
<canvas id="canvas"></canvas>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-30 15:02:50

我认为问题是,间隔永远不会消失。需要将间隔分配给变量,然后按变量名清除间隔:

代码语言:javascript
复制
var newImageInterval;

canvas.addEventListener("mouseover", function(){
  newImageInterval = setInterval(newImage, 100);
}, false);
canvas.addEventListener("mouseout", function(){
  clearInterval(newImageInterval);
}, false);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39794186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档