dinge im hintergrund zuerst malen

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Horst der Biber

Betreff: dinge im hintergrund zuerst malen

BeitragMo, März 13, 2006 22:51
Antworten mit Zitat
Benutzer-Profile anzeigen
hab ma ne frage.. wie kann ich objekte mit nem kleineren y-wert aus einer liste zuerst malen? also das dadurch ne verdeckung entsteht.

mein ansatz dazu:
Code: [AUSKLAPPEN]
Type klotz
Field x,y
Field ys
Field r,g,b

Method draw()
SetColor r,g,b
DrawRect x,y,200,200
End Method

Function create:klotz(x,y,ys,r,g,b)
created:klotz=new klotz
created.x=x
created.y=y
created.ys=ys
created.r=r
created.g=g
created.b=b
Return created
End Function
End Type

klotzliste:TList=new TList
klotzranking:TList=new TList

apptitle$="dinge im hintergrund zuerst malen"
Graphics 640,480,0,60
SetClsColor 255,255,255
Cls

klotzliste.addlast(klotz.create(100,0,4,255,60,0))
klotzliste.addlast(klotz.create(200,140,2,100,230,0))
klotzliste.addlast(klotz.create(300,280,-4,0,160,255))

Repeat

For k:klotz=eachin klotzliste
k.y:+k.ys
If k.y<0 Or k.y>280 Then k.ys=-k.ys
Next

klotzranking.clear()
temp=640
For k:klotz=eachin klotzliste
If k.y<temp Then klotzranking.addfirst(k)
If k.y>=temp Then klotzranking.addlast(k)
temp=k.y
Next

Cls
For k:klotz=eachin klotzranking
k.draw()
Next
Flip

Until KeyHit(KEY_ESCAPE)
End

funktioniert zwar so wie ich des wollt abba is mir halt zu langsam. ausserdem stört mich die 2te liste.
hat jemand ne bessere lösung?
 

Dreamora

BeitragMo, März 13, 2006 22:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Schreib eine Methode Compare(other:object) für deinen Type, der 1 ausgibt, wenn das objekt weiter hinten ist, 0, wenn es gleich weit hinten ist und -1 wenn es weiter vorne ist.

danach einfach liste füllen, list.sort() und dann mit for-each zeichnen Smile
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

BtbN

BeitragDi, März 14, 2006 14:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Nur ein paar Threads weiter unten ist fast das selbe Problem, nur nicht mit Y-Order sondern mit Z-Order:
https://www.blitzforum.de/viewtopic.php?t=16908

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group