这个对象出现了null,看一下原因就清楚了
已解决问题,感谢!
把ctx1换成2
大鱼的动作也可以使用deltaTime
只是使用deltaTime是为了保持匀速运动的效果
而大鱼的运动使用lerpDistance()方法,大鱼位置越趋近于鼠标位置速度就越慢,本来就是变速运动,不用deltaTime也可以
let deltaY = this.y - my;
let deltaX = this.x - mx;
这样写就正确了
can1 = addEventListener();这里写错了,应该是
can1.addEventListener();
var beta = Math.atan2(deltaY,deltaX) + Math.PI;//加PI可以让大鱼转向
希望可以帮到你
课程里有介绍啊,ctx1.rotate(this.angle);这行代码加了么?
前面代码这样的
//Math.atan2(y, x)
var deltaY = mom.y - this.y;
var deltaX = mom.x - this.x;
var beta = Math.atan2(deltaY, deltaX) + Math.PI;//-PI/2, PI/2
//lerp angle
this.angle = lerpAngle(beta, this.angle, 0.6);
已解决
上面是谷歌,下面是ie
var beta = Math.atan2(deltaY,deltaX) + Math.PI;//加PI可以让大鱼转向
希望可以帮到您
因为你设置是就是那样的,不要向下就不会是的
//求鼠标的坐标 if(e.offSetX || e.layerX){ mx=e.offSetX == undefined ? e.layerX:e.offSetX; my=e.offSetY == undefined ? e.layerY:e.offSetY; } //求追随鼠标变化而变化的大鱼坐标。 this.x=lerpDistance(mx,this.x,0.97); this.y=lerpDistance(my,this.y,0.97);
那是因为初始化的鱼头的方向是向左的,就是负方向,delayX,delayY值的计算应该是delayX = -( mx - this.x ),即delayX = this.x - mx,
有图吗?有代码吗?还有屏幕上能用厘米的?
不是这一句的错误,,,,可能是上面哪里的字符输入错了
不是mx和my,是mom.x和mom.y
x-图片在画布画图的起点x坐标,Y-图片在画布画图的起点x坐标,w-要在画布上画的图的宽,h-要在画布上画的图的高
应该是drawImage(图片对象,x,y,w,h)应该是这个方法里的w和h设置的过大了吧,海葵或许是设置的strokeStyle=过大了,海葵只有头应该是moveTo(),lineTo()方法设置有问题
获取鼠标相对canvas的偏移量
什么问题?
事件是鼠标移动 不是鼠标点击 你查看一下
知道了。。
commonFunction.js在html中引进来了没有?
我也是这样 你解决了没啊
背景...等都是画在canv2上 ,而鱼是绘制在canv1上 , c1 在 c2上面 ,ctx2动画重新绘制背景相当于刷新,而ctx1不同
应该是祯的问题吧,吧代码贴出来看看
也就是说你的角度没有设置,请在 this.angle变量之后+ Math.PI
this.angle = lerpAngle(beta, this.angle, 0.9) + Math.PI
html中没有引入commonFunctions.js