Object "flicker"when deleted

Blitz3D Forums/Blitz3D Beginners Area/Object "flicker"when deleted

The forum is locked. These are the original blitzbasic.com forums, kept so they can still be read. No new topics, replies or edits can be made here. To join in, head over to the Blitz3D+ forums.

Well, I've had a go at changing things that looked problematic but it's very difficult to debug code when you don't have the whole source and it's in another language. :)
Anyway, give it a go - not sure anything I changed would solve the flickering, though.

Function muovi_proiettile()

	For missile.bullet = Each bullet
		missile\durata = missile\durata-1
		
		If missile\durata=<0
			Delete missile
		Else
			;missile\positionx = missile\positionx ;This does nothing.
			missile\positiony = missile\positiony-missile\velocita
			;counter = counter+1 ;This doesn't appear to be used.

			For a.alieno = Each alieno
				If ImagesCollide(bullet_image,missile\positionx,missile\positiony,0,ObjectFrames(fotogramma),a\posizionex,a\posizioney,0)
					a\vitalita = a\vitalita-missile\potenza
					Delete missile
					Exit
				EndIf

				DrawImage (missile\immagine,missile\positionx,missile\positiony)
			Next		
		EndIf		
	Next

End Function


Function muovi_alieno()

	For a.alieno = Each alieno
		If a\vitalita=<0 
			crea_esplosione(a\posizionex,a\posizioney)
			hi_score = hi_score+a\punteggio
			Delete a
		Else
			Select a\percorso
				Case 1 path_movement()
				Case 2 strightMov()
			End Select
			
			If jetdistrutto = False
				casuale = Rnd(0,200)	;generazione di un numero casuale
				If casuale=2 Then create_bullet(a\posizionex,a\posizioney,MouseX(),MouseY(),200,25)	;se e 2
				;la partenza del proiettile nemico sono le coordinate del nemico stesso
			EndIf
		EndIf
	Next

End Function


Function read_path()				;funzione che carica da file i dati dei nodi

	file=ReadFile("path_points.txt")					;apro il file creato precedentemente per la lettura
	If file=0 Then Goto uscita			;se non ho aperto nessun file o se il file non esiste esci dalla funzione
	pointer=0							;puntatore al movimento nel file...aumenta di 4 in 4 siccome per un valore nei
									;file vengono allocati automaticamente 4 byte di dati (numeri,stringhe ecc ecc)
	pointer2=0							;puntatore al valore che,incrementando,fa si che leggo i valori nell'array ciclicamente

	For x=1 To max_path_points						;scorre tutti e 10 i valori
		SeekFile (file,pointer)				;mi muovo all'interno del file cosi
		a\pathx#[pointer2] = ReadFloat (file)	;leggo il valore x ,un float-number dentro il primo valore nell'array
		pointer = pointer+4					;mi sposto al prossimo dato dentro il file
		a\pathy#[pointer2] = ReadFloat (file)	;leggo il valore y
		pointer2 = pointer2+1					;passo ai prossimi due valori nell'array
		pointer = pointer+4					;mi sposto ancora al prossimo dato nel file
	Next

	CloseFile (file)					;chiudo il file

	.uscita

End Function


Function crea_esplosione(x,y)

	c.esplosione = New esplosione
	c\posizX = x	;the explosion position is the same as the alien position(considering mid-handle)
	c\posizY = y	;see up :P
	c\grandezza = 1

End Function


Function esplosione()

	For c.esplosione = Each esplosione
		Select c\grandezza
			Case 1	;small
				If MilliSecs() > c\timer + 50 ;i use a slowdown of 50 millisecs
					c\timer = MilliSecs()
					c\frame = (c\frame+1) Mod 15	;i loop trough the 7 frames of animation:this is a smaller explosion
				EndIf

				If c\frame => 14
					Delete c
				Else
					DrawImage explosion1,c\posizX,c\posizY,c\frame
				EndIf
		End Select
	Next

End Function