为什么我的星星不闪烁呢,picNo更新总觉得不对,但是和源码比对过是一样的啊,附上代码,求大神帮忙

来源:2-5 随机生成很多星星

qq_请叫我小仙女

2017-01-28 19:12

var WINDOW_WIDTH;
var WINDOW_HEIGHT;
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
var deltaTime;
var lastTime;

var starPic = new Image();

var stars = [];
var num = 30;
var starObj=function(){
   this.x;
   this.y;
   this.timer;
   this.picNo;
}
starObj.prototype.init=function(){
   this.x=Math.random()*canvas.width;
   this.y=Math.random()*canvas.height;
   this.picNo=Math.floor(Math.random()*7);
   this.timer=0;
}
starObj.prototype.update=function(){
   this.timer+=deltaTime;
   if(this.timer>30){
       this.picNo+=1;
       this.picNo%=7;
   }
}
starObj.prototype.draw=function(){
   context.drawImage(starPic,this.picNo*7,0,7,7,this.x,this.y,7,7);
}
window.onload=function() {
   WINDOW_WIDTH = document.body.scrollWidth || document.documentElement.scrollWidth;
   WINDOW_HEIGHT = document.body.scrollHeight || document.documentElement.scrollHeight;
   canvas.width = WINDOW_WIDTH;
   canvas.height = WINDOW_HEIGHT;

   context.fillStyle='black';
   context.fillRect(0,0,canvas.width,canvas.height);

   starPic.src='image/star.png';

   for(var i=0;i<num;i++){
       var obj=new starObj();
       stars.push(obj);
       stars[i].init();
   }
   lastTime=Date.now();
   gameLoop();
}
function gameLoop(){
   window.requestAnimationFrame(gameLoop);
   var now=Date.now();
   deltaTime=now-lastTime;
   lastTime=now;

   drawStars();
}
function drawStars(){
   for(var i=0;i<num;i++){
       stars[i].update();
       stars[i].draw();
   }
}

写回答 关注

1回答

  • 我是慕粉coder
    2017-02-07 16:29:31

    if(this.timer > 30){

    this.picNo +=1;

    this.picNo %=7;

    this.timer = 0;

    }


canvas实现星星闪烁特效

使用HTML5实现轮播图片上的序列帧,进行拆分讲解,逐步实现目标

54187 学习 · 121 问题

查看课程

相似问题