Mulla olis sellanen ongelma et ollaan tekemässä tässä semmosta pilipalipeliä ja ensin siinä on yks form pelin
introo varten ja sitten jokainen "huone" pelissä on niinkun omana formina, ja sitten kun esim. ukkeli (tässä tapauksessa luu) kuolee jossain huoneessa ja pelin pitäisi alkaa alusta,
se ei oikeen multa onnistu. Oon yrittäny niinku Form1.Hide Form2.Show tyylillä, joka ei ilmeisesti aloita peliä alusta, ja nyt yritin Unload Form1 Form2.Show tyylillä ja se taas ilmeisesti suorittaa Form1:en koodin "Load" -osion jotenkin samalla kun sen Unloadaa... Mulla on niinku siinä load osiossa toi teidän SoitaWAV moduuli (kiitos tästä :)
ja se soittaa formin käynnistymisen yhteydessä yhden äänen, joka sitten tulee kummittelemaan eri kentissä aina alotuksen yhteydessä. Eli pitääkö mun niinku jättää se load osio rauhaan vai mistä tuo kummittelu johtuu?
Tuo selitys ei oikeen menny mun kaaliin, mutta jos oikein ymmärsin niin ongelma on, että noissa kummassakin on ongelmia. Kokeileppa formin vaihtoa tällä tavalla:
Unload Form1
Load Form2
Form2.show
Sitten jo sulla on globaaleja muuttujia niin ne pitää vielä alustaa, eli asettaa nollaksi tai joksku muuks tietysk jona niiden pitää olla pelin alussa.
joo täytyy koittaa, mitähän toi unload tossa tekee?
siis, lataako tms. se jotai tuolta formin load osiosta?
Sana unload on sanan load vastakohta eli se laittaa formin pois käytöstä kunnes se taas ladataan load form1.
Ja formi voidaan myös piilottaa (hide) tai näyttää (show) mutta ne on toistensa vastakomennot, eikä niillä ole mitään tekemistä Loadin ja Unloadin kanssa.
Load lataa formin muistiin, mutta ei näytä sitä. Show näyttää formin ja tarvittaessa tietenkin lataa sen sitä ennen. Unload poistaa formin muistista ja näytöltä. Hide piilottaa formin, mutta se jää edelleen muistiin.
Load-aliohjelmaan tullaan silloin, kun formi ladataan muistiin (Load tai mahdollisesti Show). Unload-aliohjelmaan tullaan vastaavasti silloin, kun formi poistetaan muistista (Unload).
Jos ei meinaa toimia, niin pistä koko projekti jonnekin ladattavaksi.
Ajattelinkin muokata viestiä lisätäkseni tuon, että Load ja Unload-subbeja ei tule Showlla ja Hidella mutta Antti kerkesikin ensiksi.
Kun laittaa tuon SoitaWAV moduulin soittamaan wav-tiedoston
form1.load:ssa, ja sitten kun koko form1 on pelattu läpi, sen unloadataan ja avataan toinen, ja tähän sitten tulee ongelma, SoitaWAV soittaa saman äänen form2:ssa kuin form1:ssä, vaikka form2.load osiossa sitä komentoa ei olisi...
Mutta jätin tuon unload jutun rauhaan, tein vaan että form1.hide ja form2.show ja hyvin pelaa. Ja kun uusi peli otetaan, se unloadaa kaikki kentät, ja pelaa jälleen.
Ja sekin ihmetyttää että jos form1 unloadaa ja menee form2:een, tarinan henkilö ei liiku enää...? käytän siihen formin keydown liikuttamaan henkilöä.
No tässä on esimerkki eli Sovella sitä.
Tee kolme formia (form1, form2,form3) ja lykkää nää koodit niihin(ykköseen ja kakkoseen).
***Form1 Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyEscape Then ' jos painetaan esciä niin... Load Form2 'lataa kakkosformin muistiin, mutta ei näytä sitä vielä Unload Form1 'poistaa ykkösformin muistista Form2.Show 'näyttää kakkosformin End If End Sub Sub Form_Load() Form3.Show 'näyttää kolmosformin End Sub ***Form2 Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyEscape Then ' jos painetaan esciä niin... Load Form1 'lataa ykkösformin muistiin, mutta ei näytä sitä vielä Unload Form2 'poistaa kakkosformin muistista Form1.Show 'näyttää ykkösformin End If End Sub Sub Form_Load() 'tässä formissa ei lataudu kolmosformia! Eli tässä on esimerkin idea End Sub
Aihe on jo aika vanha, joten et voi enää vastata siihen.