Javascript onload不在类中工作

Javascript onload不在类中工作,javascript,class,canvas,onload,Javascript,Class,Canvas,Onload,这是我的代码(抱歉太长): class-Vec{ 构造函数(x=0,y=0){ 这个.x=x; 这个。y=y; } } 阶级敌人{ 构造函数(){ this.pos=新的Vec; this.vel=新的Vec; this.image=新图像(); this.image.onload=()=>{ this.image.width/=4; this.image.height/=4; } this.image.src=”https://vignette.wikia.nocookie.net/scri

这是我的代码(抱歉太长):

class-Vec{
构造函数(x=0,y=0){
这个.x=x;
这个。y=y;
}
}
阶级敌人{
构造函数(){
this.pos=新的Vec;
this.vel=新的Vec;
this.image=新图像();
this.image.onload=()=>{
this.image.width/=4;
this.image.height/=4;
}
this.image.src=”https://vignette.wikia.nocookie.net/scribblenauts/images/8/8d/Steel_Spike.png/revision/latest?cb=20130105173440";
这个位置x=宽度;
this.pos.y=高度-地面y-this.image.HEIGHT;
}
}
//设置
const ctx=document.getElementById(“画布”).getContext(“2d”);
常数宽度=600;
常数高度=400;
常数地面Y=50;
让敌人=[];
设lastUpdate=0;
函数更新(dt,现在){
//制造敌人
如果(现在-lastUpdate>2000){
lastUpdate=now;
敌人。推(新敌人);
}
for(设i=0;i<0.length;i++){
//更新敌人
敌人[i].等级x=-300;
敌人[i].pos.x+=敌人[i].vel.x*dt;
if(敌人[i].pos.x+敌人[i].image.width<0)
3.拼接(i,1);
}
}
函数绘图(){
//画背景
ctx.fillStyle=“#000”;
ctx.fillRect(0,0,宽度,高度);
//拉拢
ctx.fillStyle=“#0f0”;
ctx.fillRect(0,高度-地面Y,宽度,地面Y);
//招兵买马
ctx.fillStyle=“#f00”;
for(设i=0;i<0.length;i++){
ctx.drawImage(敌人[i]。图像,敌人[i]。位置x,敌人[i]。位置y,敌人[i]。图像。宽度,敌人[i]。图像。高度);
}
}
//游戏循环(对于这个问题不重要)
常数时间步长=1/60;
设累加器=0;
设lastRender=0;
函数循环(时间戳){
累加器+=(时间戳-lastRender)/1000;
lastRender=时间戳;
while(累加器>=TIMESTEP){
更新(TIMESTEP,timestamp);
累加器-=时间步长;
}
draw();
请求动画帧(循环);
}
请求动画帧(循环)

跳过它

我认为
在您创建的上下文中,这是图像本身。如果您使用了箭头函数,那么您的代码可能会work@aaaaaa我将函数改为箭头函数。现在没有错误,但代码没有按预期工作:(请将此代码减少到最简单的程度。这是一个重要的练习,因为a)这意味着您只显示与问题相关的代码,b)99%的时间您实际解决了问题,因为一旦删除了所有不相关的位(硬编码任何以前是动态的东西,删除不使用的调用,等等)您实际上是自己发现问题的。如果您没有发现问题,请再次查看(a)。@Mike'Pomax'Kamermans感谢您的建议,我试图缩短代码。您还有更多要删除的内容:不需要动画循环,也不需要更新()功能:如果这是一个问题,它将立即成为一个问题,不需要绘制超过一个帧。