Wpis z mikrobloga

#java #gamedev #libgdx #programowanie
Mirki, posiadam dwie funkcje które loopują ten sam ArrayList. Pierwsza funkcja jest podpięta pod Timer(około 25 razy na sekunde). W momencie gdy druga funkcja usuwa jeden obiekt z ArrayList'a, program wywala błąd:java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)

Kod funkcji: http://pastebin.com/fMPQx1Nm
  • 17
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@feelfree: Dodatkowo parę hintów:

Staraj się pisać tak, aby zachować pewnie naturalne 'flow'. Masz 2 główne 'kanał' przepływu wykonania:
a) trzeba usunąć 'packet'
b) nie
  • Odpowiedz
@feelfree: for(OtherPlayer otherpl : new ArrayList(otherplayers))
Przekazujesz tutaj tylko referencję do listy, a nie kopię obiektów. Musisz zrobić głęboką kopię listy, bo inaczej będziesz miał problem z referencjami do pól, które też są jakimiś obiektami.

Konwencja kodowania w Javie - zmienne + settery/gettery.
  • Odpowiedz
@feelfree: Ogarnąłeś to? Nie wiem czym jest ten x, ale w tym kodzie tylko w 1 miejscu masz get, zrób na samym początku indexpl = -1 nie 0, i potem jak robisz te gety to zrób if(indexpl != -1) tylko wtedy rób gety, bo iniciujesz indexpl na 0 i liczysz, że ten for go zmieni a for może go nie zmienić a x z poprzedniego wywołania może być true i
  • Odpowiedz