dinge im hintergrund zuerst malen
Übersicht

![]() |
Horst der BiberBetreff: dinge im hintergrund zuerst malen |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group