Jonas Skrevet 19. april 2004 Del Skrevet 19. april 2004 (endret) Hallo Driver et spill her hvor stjerner skal pasere forbi. Alt funker helt til jeg unloader en stjerne og så skal flytte på dem. Når jeg unloader en stjerne så blir ikke stjerne med høyere index flytta et hakk ned, så når jeg skal flytte på alle gir det error. Denne koden bruker jeg for å sjekke om en stjerne er utenfor bilde, og da unload den: Dim sjekk For sjekk = 1 To stjerne.UBound If stjerne(sjekk).Left <= -30 Or stjerne(sjekk).Left >= 4845 Or stjerne(sjekk).Top >= 4605 Then Unload stjerne(sjekk) Dim f For f = sjekk + 1 To stjerne.UBound stjerne(f).Index = stjerne(f).Index - 1 Next f End If Next sjekk Edit: leif Endret 19. april 2004 av Jonas Lenke til kommentar
Legion Skrevet 19. april 2004 Del Skrevet 19. april 2004 hva skjer dersom du bytter om på rekkefølgen slik som nedenfor Dim sjekk For sjekk = 1 To stjerne.UBound If stjerne(sjekk).Left <= -30 Or stjerne(sjekk).Left >= 4845 Or stjerne(sjekk).Top >= 4605 Then Dim f For f = sjekk + 1 To stjerne.UBound stjerne(f).Index = stjerne(f).Index - 1 Next f Unload stjerne(stjerne.UBound) End If Next sjekk Lenke til kommentar
Jonas Skrevet 19. april 2004 Forfatter Del Skrevet 19. april 2004 (endret) Samme error som sist. Man kan tydelighvis ikke skifte på index verdien med den koden.. Edit: error på index skiftinga Endret 19. april 2004 av Jonas Lenke til kommentar
aadnk Skrevet 19. april 2004 Del Skrevet 19. april 2004 (endret) Årsaken til feilen er slik du sa, Index propertyen er kun Read-only. Derfor må du bruke en slik kode: Public Sub CreateStar(Left As Integer, Top As Integer) Dim Tell& For Tell = stjerne.LBound To stjerne.Ubound If stjerne(Tell).Visible = False Then Exit For End If Next If Tell > stjerne.Ubound Then Load stjerne(stjerne.Ubound + 1) Tell = stjerne.Ubound End If stjerne(Tell).Left = Left stjerne(Tell).Top = Top stjerne(Tell).Visible = True End Sub Public Sub RemoveStars() Dim Tell& For Tell = 1 To stjerne.Ubound If stjerne(Tell).Left <= -30 Or stjerne(Tell).Left >= 4845 Or stjerne(Tell).Top >= 4605 Then stjerne(Tell).Visible = False End If Next End Sub For å slette objekter i stjerne arrayen må du skrive denne koden: RemoveObjects For å legge til en stjerne må du bruke denne koden: CreateStar 10 + (Rnd * 4795), -10 Edit: Feil framgangsmåte Endret 19. april 2004 av aadnk Lenke til kommentar
Jonas Skrevet 19. april 2004 Forfatter Del Skrevet 19. april 2004 Den tok vist ikke bort alle.. Fikk error når jeg flytta stjernene. Har lagt ut hele prosjektet med din og min kode her. Lenke til kommentar
aadnk Skrevet 19. april 2004 Del Skrevet 19. april 2004 Hele framgangsmetoden er feil. Det er mye smartere å bare sløyfe unload koden men heller bruke Visible propertien og loade nye stjerner når det trengs. Se min forrige post for oppdatert kode., Lenke til kommentar
Jonas Skrevet 19. april 2004 Forfatter Del Skrevet 19. april 2004 Skjønner. Prøvde å bare flytte de opp igjen når de var kommet ned og jeg klarte det Lenke til kommentar
jonask Skrevet 20. april 2004 Del Skrevet 20. april 2004 Kanskje du burde vurdere å ikke lage stjerne som objekter (jeg antar de er PictureBoxer?) men heller lagre dem som variabler i array eller linked list og heller tegne dem for hvert frame. litt tyngre, men mye stiligere Hvis du gidder kan du jo sende meg kildekoden på [email protected] så kan jeg kikke på det? Lenke til kommentar
Jonas Skrevet 20. april 2004 Forfatter Del Skrevet 20. april 2004 Jeg tenkte på det da jeg begynte å få problemer, men da hadde jeg kommet så langt så jeg gidda ikke å begyne på nytt. Har fått det til nå. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå