• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Działa na tylko pierwszy element tablicy

VPS Starter Arubacloud
0 głosów
146 wizyt
pytanie zadane 18 listopada 2018 w JavaScript przez ptaku19 Użytkownik (800 p.)

Witam, mam problem z tablicą. Obiekt rainpower to element tablicy rain. Znajduje się w nim 30 takich elementów. Gdy go użyję obiekty tworzą deszcz meteorów,lecz działa on tylko na pierwszy element z tablicy Enemys. Jak zrobić, aby każdy element z Enemys został trafiany?

Trafiony obiekt przekazuje true do funkcji  w której element rain zostaje wyrzucony z tablicy.

Oto kod z problemem :

RainPower.prototype.hits = function(){
 if(this.x > Enemys[i].x && this.x < Enemys[i].x + Enemys[i].w && this.y + this.h > Enemys[i].y ){
   console.log('ssss')
return true
}else{
  return false
}
}

 

1 odpowiedź

0 głosów
odpowiedź 18 listopada 2018 przez Tomek Sochacki Ekspert (227,490 p.)
Ale Ty przecież metodą hist nie iterujesz po żadnej tablicy? Czym jest ta zmienna "i"? Gdzie wywołujesz tę metodę? I nie baw się w taki sposób z prototypami bo się trochę w tym chyba zagubiłeś, proponuję abyś zrobił to z duchem czasu po prostu jako klasę i w niej odpowiednie metody i pola, to wtedy myślę, że sam zobaczysz gdzie tkwi błąd.
komentarz 18 listopada 2018 przez Tomek Sochacki Ekspert (227,490 p.)
odnosisz się też to zmiennej "x" z tego obiektu, ale czym jest zmienna Enemys? to też pole tego obiektu czy chcesz się odnieść do czegoś globalnego czy co?
komentarz 18 listopada 2018 przez ptaku19 Użytkownik (800 p.)

@Tomek Sochacki, wytnę większą ilość kodu bo może rzeczywiście jest mało dokładnie. 

function RainPower (){
  this.x = rand(300,cw-300);
  this.y = rand(-1000,-50);
  this.w = 20;
  this.h = 50;
  this.hitting = false;
  this.toDelete = false;
  this.hide = function(){
    this.toDelete = true;
  }
  this.speedY = 2;
  this.gravity = function(){
    this.y +=this.speedY;
  }

};

 RainPower.prototype.draw = function(){ ctx.fillStyle = 'black' ctx.drawImage('jakies tam zdjecie',this.x,this.y,this.w,this.h) this.gravity() }


RainPower.prototype.hits = function(){
 if(this.x > Enemys[i].x && this.x < Enemys[i].x + Enemys[i].w && this.y + this.h > Enemys[i].y ){
   console.log('ssss')
return true
}else{
  return false
}
}

//enemy pojawiają się co 10 sekund
for(var i =0; i<Enemys.length;i++){
  Enemys[i] = new Enemy();
}


var rain = []
for(var i =0;i<30;i++){
 rain[i] = new RainPower()
}
// deszcz meteorow zaczyna się tworzyć, gdy nacisnę przycisk na ekranie, lecz wyciełem to bo jest tego sporo



if(rainpower.start == true){
    for(var i=0; i<rain.length;i++){
  rain[i].draw();
  rain[i].hits();

    for(var j =0;j<Enemys.length;j++){
    if(rain[i].hits(Enemys[j])){
      rain[i].hide()
      if(rain[i].toDelete == true){
        rain.splice(i,1);
      }
    }
    }
      }
    }

 

komentarz 18 listopada 2018 przez ptaku19 Użytkownik (800 p.)
Dodam, że robię wszystko w czystym JS z racji tego iż chce się więcej nauczyć i odrozniać JS od bibliotek.
komentarz 19 listopada 2018 przez Bornegio Obywatel (1,070 p.)
Ale klasa jest elementem js w standardzie es6. Jeśli się uczysz jsa ucz się aktualnych standardow

Podobne pytania

0 głosów
2 odpowiedzi 240 wizyt
pytanie zadane 18 września 2018 w JavaScript przez MrxCI Dyskutant (8,260 p.)
0 głosów
1 odpowiedź 280 wizyt
pytanie zadane 26 lutego 2016 w HTML i CSS przez ShadoWs Bywalec (2,800 p.)
0 głosów
0 odpowiedzi 451 wizyt

92,961 zapytań

141,924 odpowiedzi

321,160 komentarzy

62,295 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...