这个要在canvas的实例上去绑定事件
https://www.jianshu.com/p/8bcc8e18728e?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
这个里面的东西,要看文档
就我个人学完这个课程之后的收获来解答这个问题,之所以效果会变得很差,首先的一个原因是由于将做整体aliveUpdate的内容放入到具体每一个obj后执行的次数会大大增加,从原来的每一次动画判断一次life到现在的每一次动画都要在每一个星星中判断life,进而导致效率变慢,执行一次所需的时间大大增长。再而我们运用resquestAnimationFrame函数,其中的deltatime由于运行时间大大增长导致其值较大, 0.03×deltatime×0.05的值直接就大于1。因此到最后的效果不是差,只不过渐变效果优于时间间隔太长已经变成很僵硬的跳转而已。同学这这个想法的初衷应该是想让代码更简洁,只不过在实际运用过程中,代码的运行效率应该更多地被考虑
网上搜一下就知道了
starObj函数未定义
ctx无法获取与windows操作系统没有关系,可能是你main.js引入的位置不对。把index.html代码贴上来看看。
没感觉
starObj.prototype.updata = function() {
this.timer = deltaTime
if (this.timer > 50) {
this.picNo += 1;
this.picNo %= 7;
this.timer = 0
}
console.log(this.picNo)
}
加个console.log就会动了不信你试试
检查下是不是文件已经删除或者文件换了地方,再不行就换一个编辑器打开看看
前端代码编写软件都可以的
有document.ready,window.onload和body.onload,根据中文意思和我目前所学,我猜,document.ready是在数据准备好的时候,而onload应该是在完全下载下来的时候,都可以作为触发点或者什么吧。例如加载图片的时候,就分与数据建好连接和完全下载下来,在图片很大的时候就能看出来了。
不是设置了边界吗?
js也算是一种面向对象的语言,它的类是抽象的。
星星是白色的,背景是白色的,就看不出来了啊。。。
把星星换个颜色应该就可以了吧。。至于效果好不好看就不知道了。。。。
gameloop()这个函数改下,可以试试看
function gameloop(){
setTimeout(gameloop,100);
drawStars();
}
那是没有定义的啊!你没有new 实例化啊
你的drawImage函数写错了,
ctx.drawImage(img1,0,0,this.n*7,7,this.x,this.y,7,7);
你控制台查看具体是哪行有问题,再分析原因解决问题.
不会。因为做了一个渐变效果。
要么你没定义,要么你定义的没生效
可以直接调用,放到定义函数的下面,不知道有没有被调用,是放到加载第一个function的里面或初始化的时候
if(this.timer > 30){
this.picNo +=1;
this.picNo %=7;
this.timer = 0;
}