Javascript 什么';为网页编写动画标题的最有效方法是什么?

Javascript 什么';为网页编写动画标题的最有效方法是什么?,javascript,jquery,canvas,Javascript,Jquery,Canvas,我一直在尝试用canvas编写一个动画标题,其中随机添加图像(齿轮)和鼠标悬停事件,受影响的齿轮开始动画(转动)。我很难做到这一点。我真的在这件事上浪费了很多时间,决定在这里寻求帮助。在这里使用canvas还可以吗?因为我已经读到,单个canvas对象没有“eventlisteners”,因为canvas框架被视为一个大对象。所以它可能是“不可能”或没有效率,使单齿轮动画。。。有没有解决这个问题的好教程,或者至少有一些我应该先听/读的技巧 这是我的密码: var canvas=document.

我一直在尝试用canvas编写一个动画标题,其中随机添加图像(齿轮)和鼠标悬停事件,受影响的齿轮开始动画(转动)。我很难做到这一点。我真的在这件事上浪费了很多时间,决定在这里寻求帮助。在这里使用canvas还可以吗?因为我已经读到,单个canvas对象没有“eventlisteners”,因为canvas框架被视为一个大对象。所以它可能是“不可能”或没有效率,使单齿轮动画。。。有没有解决这个问题的好教程,或者至少有一些我应该先听/读的技巧

这是我的密码:

var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
var cw=canvas.width;
var ch=canvas.height;

var imageURLs=[];  
imageURLs.push("https://image.freepik.com/free-icon/cogwheel_318-102625.png");
imageURLs.push("https://image.freepik.com/free-icon/cogwheel_318-102625.png");
imageURLs.push("https://image.freepik.com/free-icon/cogwheel_318-102625.png");
imageURLs.push("https://image.freepik.com/free-icon/cogwheel_318-102625.png");
imageURLs.push("https://image.freepik.com/free-icon/cogwheel_318-102625.png");
imageURLs.push("https://image.freepik.com/free-icon/cogwheel_318-102625.png");





//the loaded images will be placed in imgs[]
   var imgs=[];

   var imagesOK=0;
   loadAllImages(start);

   function loadAllImages(callback){
     for (var i=0; i<imageURLs.length; i++) {
        var img = new Image();
        imgs.push(img);
        img.onload = function(){ 
        imagesOK++; 
          if (imagesOK>=imageURLs.length ) {
             callback();
          }
    };
      img.onerror=function(){alert("image load failed");} 
    img.crossOrigin="anonymous";
    img.src = imageURLs[i];
  }      
}

function start(){

  // the imgs[] array now holds fully loaded images
  // the imgs[] are in the same order as imageURLs[]
  for(var i=0;i<imgs.length;i++){
    var randomX=Math.min(cw-imgs[i].width,Math.random()*cw);
    var randomY=Math.min(ch-imgs[i].height,Math.random()*ch);
    ctx.drawImage(imgs[i],randomX,randomY);
  }

}
var canvas=document.getElementById(“canvas”);
var ctx=canvas.getContext(“2d”);
canvas.width=window.innerWidth;
canvas.height=window.innerHeight;
var cw=画布宽度;
var ch=画布高度;
var-imageurl=[];
imageURLs.push(“https://image.freepik.com/free-icon/cogwheel_318-102625.png");
imageURLs.push(“https://image.freepik.com/free-icon/cogwheel_318-102625.png");
imageURLs.push(“https://image.freepik.com/free-icon/cogwheel_318-102625.png");
imageURLs.push(“https://image.freepik.com/free-icon/cogwheel_318-102625.png");
imageURLs.push(“https://image.freepik.com/free-icon/cogwheel_318-102625.png");
imageURLs.push(“https://image.freepik.com/free-icon/cogwheel_318-102625.png");
//加载的图像将放置在imgs[]
var-imgs=[];
var-imagesOK=0;
加载图像(开始);
函数LoadAllImage(回调){
for(var i=0;i=imageURL.length){
回调();
}
};
img.onerror=function(){alert(“映像加载失败”);}
img.crossOrigin=“匿名”;
img.src=imageURL[i];
}      
}
函数start(){
//imgs[]阵列现在保存完全加载的图像
//imgs[]与ImageURL[]的顺序相同

对于(var i=0;i这可能是您感兴趣的一个资源。它被称为“GSAP”,代表“GreenSock动画平台”。它允许使用HTML5/JS进行许多简单的动画,只需很少的代码

它还提到了用画布对象工作。特别是在页面的中间有一个部分,显示了一个“StigGruto”效果,听起来类似于你正在尝试做的。(有一些盒子旋转并滚动到位)

我知道我最近一直在学习如何使用它,它的简单性给我留下了深刻的印象,他们的页面上有一些基本的入门教程以及代码笔链接。无论如何,希望这能在某种形式或方式上有所帮助。祝你好运


这可能是您感兴趣的一个资源。它被称为“GSAP”,代表“GreenSock动画平台”。它允许使用HTML5/JS制作大量简单的动画,只需很少的代码

它还提到了用画布对象工作。特别是在页面的中间有一个部分,显示了一个“StigGruto”效果,听起来类似于你正在尝试做的。(有一些盒子旋转并滚动到位)

我知道我最近一直在学习如何使用它,它的简单性给我留下了深刻的印象,他们的页面上有一些基本的入门教程以及代码笔链接。无论如何,希望这能在某种形式或方式上有所帮助。祝你好运


我不是这方面的专家,但你似乎可以将事件侦听器附加到画布元素。请检查。我不是这方面的专家,但你似乎可以将事件侦听器附加到画布元素。请检查。非常感谢。这可能会使我的工作更轻松。是的,这非常棒。我在愚弄你在Jquery和CSS动画方面,当我遇到GSAP时,我大吃一惊。我需要做一些学习,但即使我的知识有限,这也是一个巨大的帮助。再次,祝你好运!只是确认GSAP是一个功能齐全的动画框架,可以轻松地用于在画布元素上驱动动画。这是可能的,因为GSAP可以操纵(设置动画)简单的老javascript对象中的属性。GSAP是html5画布上的一个很棒的动画工具!非常感谢。这可能会让我的工作更轻松。是的,它非常棒。当我遇到GSAP时,我正在玩弄Jquery和CSS动画,我的下巴都掉了下来。我需要做一些学习,但即使我的知识有限,它也会很好这是一个巨大的帮助。同样,祝你好运!只是确认GSAP是一个功能齐全的动画框架,可以轻松地用于在画布元素上驱动动画。这是可能的,因为GSAP可以在普通的旧javascript对象中操纵(动画化)属性。GSAP是html5画布的一个很棒的动画工具!