Po przeniesieniu niektórych metod z głównej klasy do osobnej aplikacja się nie odpala

0

Witajcie. Piszę grę snake i chciałem przenieść niektóre metody z głównej klasy do osobnej (klasy Gra). Gdy przeniosłem, aplikacja się nie odpala i wyskakują błędy w konsoli. Chciałem poprzenosić niektóre metody by nie umieszczać wszystkiego w głównej. Jeśli mam te metody w głównej to wszystko działa. Gdy usunę z klasy Gra wszystkie AudioClipy to gra działa ale przyciski "p" i "enter" odpowiadające za wstrzymanie i kontynuowanie gry nie działają.

Klasa Snake (główna): http://pastebin.com/d34LK9gy
Klasa Ruch: http://pastebin.com/rLNJcbdZ
Klasa Random: http://pastebin.com/eN9FXBqt
Klasa Gra: http://pastebin.com/c7jreJve

Błędy jakie pojawiają się w konsoli: http://pastebin.com/hPJGtieN

0

Nie jestem pewien bo w javie nie pisze ale moim zdaniem spróbuj najpierw może w klasie Gra zdefiniowac zmienne muz i przegrana w całej klasie jako private czyli zrob z tego metody klasy a pozniej w konstruktorze przypisz im wartosci zwracane z tego GetAudioClip(). Mówie, tylko strzelam bo nie napisałem nic bardziej skomplikowanego w javie niż gre na androida (wlasciwie nie napisalem a przepisalem z tutoriala ;P).Ale moim zdaniem powinno być mniej błędów. Jeśli nie pomoże to chociaż zmniejszysz sobie złożoność obliczeniową bo wykorzystujesz wielokrotnie przypisanie do tej zmiennej i wielokrotnie ją definiujesz co każde wywołanie funkcji

0

Teraz pojawia się coś takiego: http://pastebin.com/r5DkKxFw

1

Na rzecz klasy, która dziedziczy po klasie Applet, ale nie jest w programie apletem, nie jest wywoływana metoda setStub(AppletStub). W konsekwencji metody getCodeBase(), getDocumentBase() i getAudioClip() zwracają null. Jedno z możliwych rozwiązań problemu:

//w klasie Snake:
Gra game = new Gra(this); 
//w klasie Gra:
private Snake mainClass; //definicja pola
public Gra(Snake mainClass) //kontstruktor
{
    this.mainClass = mainClass;
}
//w metodzie StartGra()
Snake.gra = true;
if(Snake.gra == true) //Btw, po co to sprawdzenie?{ 
    AudioClip muz = mainClass.getAudioClip(mainClass.getCodeBase(), "muzyka/sound.wav");
    muz.play();
}
//analogicznie w paru innych metodach.
0

@bogdans
dzięki działa :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1