Witam, mam taki problem jest kod który sprawdza czy jeden z 3 pkt nie znalazł się poza canvas i jeśli tak to przenosi go na 2gi koniec canvas(znika z prawej wychodzi z lewej itp) o to fragmnt kodu który działa(głównie rozchodzi się o pierwszą linijke czyli warunek) :
if(this.points[0].x<0 && this.points[1].x<0 && this.points[2].x<0){
this.x+=VAR.W-Math.min(this.points[0].x,this.points[1].x,this.points[2].x)*0.9
}else if(this.points[0].x>VAR.W && this.points[1].x>VAR.W && this.points[2].x>VAR.W){
this.x-=VAR.W-(VAR.W-Math.max(this.points[0].x,this.points[1].x,this.points[2].x))*0.9
}
if(this.points[0].y<0 && this.points[1].y<0 && this.points[2].y<0){
this.y+=VAR.H-Math.min(this.points[0].y,this.points[1].y,this.points[2].y)*0.9
}else if(this.points[0].y>VAR.H && this.points[1].y>VAR.H && this.points[2].y>VAR.H){
this.y-=VAR.H-(VAR.H-Math.max(this.points[0].y,this.points[1].y,this.points[2].y))*0.9
}
Jak widać pkt są elementami w tablicy więc wpadlem na pomysł aby zrobić sprawdzanie w pętli i wyszło mi coś takiego:
for(i==0;i<this.points.length;i++)
{if(this.points[i].x<0){
this.x+=VAR.W-Math.min(this.points[0].x,this.points[1].x,this.points[2].x)*0.9
}else if(this.points[i].x>VAR.W){
this.x-=VAR.W-(VAR.W-Math.max(this.points[0].x,this.points[1].x,this.points[2].x))*0.9
}
if(this.points[i].y<0){
this.y+=VAR.H-Math.min(this.points[0].y,this.points[1].y,this.points[2].y)*0.9
}else if(this.points[i].y>VAR.H){
this.y-=VAR.H-(VAR.H-Math.max(this.points[0].y,this.points[1].y,this.points[2].y))*0.9
}}
Ale to niestety nie działa , pytanie dlaczego (mam swoje przypuszczenie)? i jak to zrobić w pętli bo jeśli obiekt miałby 1000pkt do sprawdzenia to niestety wypisywanie tego ręcznie by było bez sensu.
PS: jest to fragment z portalu kursownik , robie gry astroids jesli ktos by chcial pełen kod to jest tam dostępny.
PSS: dodam że pętla nie wyrzuca błędu tylko obiekt nie teleportuje się tak jak w przypadku wypisania ręcznego.
PSSS: Podejrzewam że pętla jest źle umieszczona i powinna być wewnątrz warunków if, ma to sens ?