Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Form Unload (Visual Basic 6)

Sivun loppuun

Antice [26.03.2004 10:13:27]

#

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?

Gaxx [26.03.2004 11:09:07]

#

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.

Antice [26.03.2004 11:36:27]

#

joo täytyy koittaa, mitähän toi unload tossa tekee?
siis, lataako tms. se jotai tuolta formin load osiosta?

Gaxx [26.03.2004 12:28:11]

#

Sana unload on sanan load vastakohta eli se laittaa formin pois käytöstä kunnes se taas ladataan load form1.

hunajavohveli [26.03.2004 14:29:26]

#

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.

Antti Laaksonen [26.03.2004 14:29:30]

#

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.

hunajavohveli [26.03.2004 14:30:25]

#

Ajattelinkin muokata viestiä lisätäkseni tuon, että Load ja Unload-subbeja ei tule Showlla ja Hidella mutta Antti kerkesikin ensiksi.

Antice [29.03.2004 12:50:48]

#

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öä.

Gaxx [29.03.2004 14:09:22]

#

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

Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta