为了账号安全,请及时绑定邮箱和手机立即绑定

如何移动整个队列并进行canvas描绘。

如何移动整个队列并进行canvas描绘。

繁星点点滴滴 2019-03-13 13:15:05
想要完成下面的效果图,目前进度,move:方法达不到想要的自动以速度位移2的速度移动,var enemy = new Enemy(30,50,50,2);enemy.draw();enemy.moove();function Enemy(x,y,size,speed){          this.x = x,          this.y = y,          this.size = size,          this.speed = speed //反弹系数        }        /**         * 原型方法         * @type {draw描绘出10个怪兽,clear清除画布,move移动怪兽队列}         */        Enemy.prototype = {            draw:function(){                 for(let i=0;i<10;i++){                   enemys[i] = new Image();                   enemys[i].src ='./img/enemy.png';                   enemys[i].onload = function(){                      enemy.x += 50;                      context.drawImage(enemys[i], enemy.x, enemy.y, enemy.size, enemy.size);                    };                 }              },              clears:function(){                context.clearRect(30, 0, canvas.width, canvas.height);              },              // move:function(){              //     var length = enemys.length;               //     if(enemy.x+enemy.speed > canvas.width               //     || enemy.x + enemy.speed < 0               //     || enemy.y + enemy.speed > canvas.height              //     || enemy.y + enemy.speed < 0              //     ){speed  *=-1}              //     enemy.x +=enemy.speed;              //     enemy.clears();              //     enemy.draw();              //     // context.drawImage(planeImage, plane.x, plane.y, plane.width, plane.height);                        //     requestAnimationFrame(enemy.move);              // },             move:function(){              enemy.x +=enemy.speed;              enemy.clears();              enemys.splice(0,enemys.length);              enemy.draw();              // requestAnimationFrame(enemy.move());             }        }
查看完整描述

4 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

在move方法里设置定时器.定时器执行draw方法.
另外在draw方法里一直创建对象不好.
可以先创建个init方法.创建完对象,存在数组中,在draw方法在修改对象属性就可以了

查看完整回答
反对 回复 2019-03-26
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

requestanimationframe 里调用位置平移 平移量为 (2 Math.sin(offsetAngle)/60, 2 Math.cos(offsetAngle)/60)


查看完整回答
反对 回复 2019-03-26
  • 4 回答
  • 0 关注
  • 532 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信