Jonez wrote:Riveillä 126-128 tuhoat seuraavat objektit: (jos hiiri on tietyissä koordinaateissa).Ensimmäisellä tuhoamiskerralla objektit kyllä ovat olemassa, mutta sadasosasekuntia myöhemmin, kun ohjelma on pyörähtänyt silmukassa kerran ja palaa uudestaan tähän kohtaan, objekeja ei enää ole. Nehän juuri tuhottiin. Jos yrität poistaa (tai muuten vain käyttää) objektia jota ei ole, seuraa Memory Access Violation.Code: Select all
DeleteObject load2 DeleteObject start2 DeleteObject intro2
Eli tee mieluummin näin:
1. Joko tyydyt piilottamaan objektit (ja säilömään ylimääräisen arvon objektien elollisuudesta, tyyliin: load2_elossa = True / False ). Ensin siis tarkastetaan onko objekti elossa (If obj_elossa = true), ja jos on, tuhotaan se ja annetaan obj_elossa-muuttujalle arvo false.
2. TAI: tuhoamisen yhteydessä annat ko. objektimuuttujalle arvon 0 (cb ei tee tätä itse kun mediaa tuhotaan). Ennen tuhoamista tarkastat onko arvo 0. Jos on, objektia ei tuhota. Siis:Edit. Suosittelen erittäin lämpimästi opettelemaan taulukot (Dim) ja tyyppikokoelmat (Type). Nämä ovat erittäin hyödyllisiä. Niin hyödyllisiä että käytin kursivointia, vaikka en käytä sitä ikinä.Code: Select all
obj = LoadObject( "media\cow.bmp" ) Repeat //Tämä ehtolause toteutuu vain ensimmäisellä silmukan kierroksella If obj <> 0 Then DeleteObject obj obj = 0 //<- jos poistat tämän rivin, seuraa MAV. EndIf DrawScreen Forever
Jos et tiedä mikä niiden etu on, niin se on periaatteessa tämä: oletetaan että sulla on 100 hahmoa, vaikka vihollista. Sen sijaan että kirjoittaisit sata kertaa koodiisi: vihu1 = LoadObject ( "vihu.png", 72 ) ... vihu2 = LoadObject( "vihu.png", 72 ) ... jne. Sekä tietenkin sata kertaa aina kun haluat vihollisen tekevän jotain, voit tehdä täysin saman asian (ja oikeastaan paljon enemmän) yhdellä silmukalla:Siis sadan rivin sijasta sinulla on neljä kolme riviä.Code: Select all
For i = 0 to 99 vihu( i ) = CloneObject( objVihu ) Next i
Edit. tällä rivillä oli jotain, mutta ei ole enää...
tämä ei mielestäni ollut ongelma koska mawi ilmestyy vain jos painan ostopainiketta... ja ongelmanani on myös että vaikka hideen yhden painikkeen se silti aktivoituu kun painan siitä kohdasta missä se on...
ja entäs tuo toinen ongelmani?