Scrollbares Berichtfenster (viewport??)
Übersicht

Donald AguBetreff: Scrollbares Berichtfenster (viewport??) |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Ich möchte in mein Spiel ein Fenster integrieren, in dem Berichte ausgegeben werden. Man soll das Fenster auch scrollen können, sobald der Platz auf dem Bildschirm ausgeschöpft ist. Leider Gottes habe ich überhaupt keinen Plan, wie ich das anstellen soll. Gescrollt werden soll übrigens nicht mit der Mouse, sondern mittels Tastatur. Ich hab mir mal den Befehl "Viewport" angeschaut, weiß was er macht und wie er funktioniert, aber hilft der mir da überhaupt? ich glaub, das muss irgendwie anders gehen. Bitte um Hilfe! ![]() THX AGU ![]() ![]() ![]() |
||
FBI-blitz |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Müsste gehen!
ORIGIN X, Y |
||
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+ Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+ |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Viewport ist bestens geeignet für solche Geschichten. Viewport macht nämlich nichts anderes als den "bemalbaren" Bereich einzugrenzen. Aussehen könnte das ganze etwa so:Code: [AUSKLAPPEN] ; Die Map, Spieler, etc. malen
Und fertig ist die Laube ViewPort 200,100,300,200 ; Den Bericht anzeigen ViewPort 0,0,screenwidth,screenheight ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Donald Agu |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke, Hubsi. Aber ich wusste bereits, was viewport macht, aber du hast mich glaube ich net ganz verstanden... ![]() Das "Berichtfenster" (assiger Name, irgendwie ![]() ![]() ![]() Außerdem möchte ich, dass man das Fenster scrollen kann, um Berichte nachzulesen. Da stehe ich echt vor nem Problem... ![]() Freue mich auf weitere Hilfe ![]() AGU |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Upsala, ja Quatsch gelesen. ![]() ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Donald Agu |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wie würde denn das mit dem scrollen etwa aussehen? Ich hab da nämlich keine ahnung und stell mir das ganze furchtbar kompliziert vor... ![]() |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist es eigendlich nicht...
Erstmal das Fenster selbst... Einfach in der Hauptschleife, bevor du den Bildschirm mit Flip neu einzechnest eine zusätzliche function einbauen die auf dem ganzen noch ein Anzeigefeld drübermalt am besten noch dieses ein/ausschaltbar machen, was noch einfacher ist! Soll das nur zum coden sein oder auch später im Spiel mit drin bleiben, so wie es bei manchen Spielen der Fall ist? zum Scrollen vieleicht die Bild Rauf und runterTaste nehmen da braucht du nur den orgin rauf oder runter setzten und das Viewport so belassen dann scrollt das automatisch.. |
||
[BB2D | BB3D | BB+]
|
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hab da mal ein kleine Beispiel gecodet!
Code: [AUSKLAPPEN] Graphics 800 ,600,16,2
;variablen für das Fenster Global BF_X = 100 ,BF_Y = 100 ,TextScrollY = 0 SetBuffer BackBuffer () While Not KeyDown (1) ;########## ;Spielschleife Color 0,0,255 Rect 10 ,10,200,100,1 Color 0 ,0,0 Text 50 ,50,"Normaler Bildschirm" ;Die Function für das Fenster Update_Berichtfenster () Flip Cls Wend ;############ End Function Update_Berichtfenster () ;fenster verschieben BF_X = BF_X + (KeyDown (32) - KeyDown (30) ) * 3 BF_Y = BF_Y + (KeyDown (31) - KeyDown (17) ) * 3 ; text Scrollen TextScrollY = TextScrollY + (KeyDown (209) - KeyDown (201) ) * 2 ; die Viewportgeschichte Origin BF_X,BF_Y + TextScrollY ;Viewportkoordinaten werden nicht von Orgin beinflußt Viewport BF_X,BF_Y,300,150 ; das ViewportFenster mit neuer Farbe ClsColor 0 ,0, $C0C0C0 Cls ;Neue textfarbe Color 0 ,0, $FFFF00 ; der Text halt Text 10 ,10,"Mein ViewPort geht" Text 10 ,40,"Taste >W A S D< verschibt das Fenster" Text 10 ,60,"Taste >Bild Rauf runter< zum Text verschieben" ;Alles wieder zurücksetzten Origin 0 ,0 Viewport 0 ,0,GraphicsWidth () ,GraphicsHeight () ClsColor 0 ,0,0 End Function Inckusive spärliche Erklärzeilen |
||
[BB2D | BB3D | BB+]
|
Donald Agu |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@rallimen: Vielen Dank für das tolle Beispiel, echt klasse!! ![]() habe aber ein problem, und zwar benutze ich in eminem Prog kein Double Buffering, da ich das net richtig kapiere (selbst bei den einfachsten Beispielen ![]() Ich hoffe, das ist dazu nicht UNBEDINGT nötig ![]() ansonsten sehe ich jahrzehntelange nervige aufräumarbeiten in meinem prog auf mich zu kommen ![]() das fenster brauch ich gar net zu verschieben, dann muss ich den origin auch net versetzen, oder? ![]() um auf deine frage zurückzukommen, falls ich sie richtig verstanden habe ![]() das mit dem ein/ausschalten isn guter tip, das bring ich glaub ich dann noch selber hin... ![]() THX AGU |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
für vernünftige Graphikgestaltung ist Doublebuffering unerlässlich. Also investier die Zeit und üb es bis du es verstehst.
Die neue, verbesserte Forensuche sollte dir eigentlich gute Ergebnisse liefen. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
so wie schon BladeRunner schrieb ist gehts ohne Doublebuffering nicht!
Bei BlitzPlus ist das zB garnicht anders möglich! dabei ist das doch so einfach Stell dir einfach vor du kritzelst was auf einen Zettel, und wenn du fertig bist zeigt du es! |
||
[BB2D | BB3D | BB+]
|
Donald Agu |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Aber immer mit diesem blöden "cls" dann und aberaber und aberaber... ![]() ne, im ernst, wenn ich das ausprobiere, mit irgend nem simplen beispiel, dann seh ich immer die eine seite, beim nächsten flip dann wieder die andere, so isses ja bestimmt auch gedacht ![]() aber die seiten werden nie leer gemacht ![]() Wenn ich jetzt aber das cls in die Schleife schreib, seh ich NIE was, einfach zum Heulen ![]() gehts auch wirklich net ohne, auch wenns nur ein textspiel is? ![]() |
||
![]() |
Rob_ |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was gibts denn da für ein Problem?
Code: [AUSKLAPPEN] Graphics 1600,1200,32,2 setbuffer backbuffer() fenster_vaR = 1 While not keyhit(1) cls (Hier rein schreibst du alles das wird auch angezeigt) (wenn du etwas machen willst das z.b ein fenster der auf auszuschalten geht machst du ne variable und ne function z.b) if fenster_var = 1 then fenster() flip wend end function fenster() rect 10,10,10,10,0 blbllb .... . ... . .. . . . end function Wenn du wieder ausschalten willst einfach die fenster variable ausschalten. [EDIT] Gefixt! |
||
AMD Athlon 64 3500+ | Infineon 1 GB DDR RAM | nVidia Geforce 7800 GTX |
- Zuletzt bearbeitet von Rob_ am Mi, März 09, 2005 18:58, insgesamt einmal bearbeitet
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzBasic: [AUSKLAPPEN] SetBuffer BackBuffer() Die Position des Cls spielt ne massgebliche Rolle ![]() |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
BladeRunner hat Folgendes geschrieben:
juhuu der syntax funzt wieder danke walski!! |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Rob_, was ist denn ne until ...wend -Schleife?
Wenn du ihm Code gibst, gib ihm richtigen code, bitte. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Donald Agu |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@bladerunner: until...wend? wo hast du denn das gelesen??? ![]() @alle: muss ich da auch wieder irgendwann auf frontbuffer umschalten? oder darf ich das überhaupt? wenn ich muss, WANN? ![]() ![]() ![]() ![]() ![]() ansonsten danke schonmal, ich probiers aus und werd mein werk "umgestalten" ![]() |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
setbuffer Frontbuffer() wird normalerweise nie benutzt | ||
[BB2D | BB3D | BB+]
|
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
SetBuffer benutzt man in der Regel nur einmal, meist gleich nach Graphics. Dann benutzt Du das Gerüst von Blade und alles ist im grünen Bereich ![]() ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Donald Agu hat Folgendes geschrieben: @bladerunner: until...wend? wo hast du denn das gelesen???
Das hatte Rob_ in seinem mittlerweile bearbeiteten Posting stehen ![]() |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group