B+: MouseXSpeed & Seltsames Problem
Übersicht

BambooBetreff: B+: MouseXSpeed & Seltsames Problem |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich programmiere zur Zeit einen Tilemapeditor in B+. Dabei habe ich folgende Probleme:
Code: [AUSKLAPPEN] Function SelectTileScroll()
mouse_scroll = MouseZSpeed() ;es wird festgestellt, ob sich die Position des Rads geändert hat If mouse_scroll < 0 And tile_active < set_number - 1 ;bei negativen Wert (nach unten scrollen) tile_active = tile_active + 1 ;...wird das aktive Tile um 1 erhöht... tile_selected = tile_selected + 1 ;...und das in der Auswahlleiste angezeigte Tile um 1 erhöht EndIf If mouse_scroll > 0 And tile_active > 0 ;bei positiven Wert (nach oben scrollen)... tile_active = tile_active - 1 ;...findet das Ganze umgekerht statt tile_selected = tile_selected - 1 EndIf End Function
Code: [AUSKLAPPEN] Function ScrollMap()
If KeyDown(200) And map_scroll_y < can_height - (selection_size + tile_size) ;Pfeiltaste: Oben map_scroll_y = map_scroll_y + tile_size ;die Karte wird immer durch map_scroll_x / y verschoben angezeigt Delay 10 ;Delay soll für ein Geschwindigkeitsmaximum beim Scrollen sorgen EndIf If KeyDown(208) And map_scroll_y > 0 - map_height * tile_size ;Unten map_scroll_y = map_scroll_y - tile_size Delay 10 EndIf If KeyDown(203) And map_scroll_x < can_width ;Links map_scroll_x = map_scroll_x + tile_size Delay 10 EndIf If KeyDown(205) And map_scroll_x > 0 - map_width * tile_size ;Rechts map_scroll_x = map_scroll_x - tile_size Delay 10 EndIf End Function
Code: [AUSKLAPPEN] Function SaveMap()
win_width = 24*16 ;Fenstervariablen werden berechnet (hätte ich auch global machen können) win_height = 10*16 win_save = CreateWindow ("Wildlands TMG - Karte Speichern", window_x+16, window_y+16, win_width, win_height, win_main, 1) lbl_width = 160 ;die Maße des Standartlabels werden definiert lbl_height = 16 lbl_x = 32 lbl_y = 32 tf_width = 160 ;die Maße des Standarttextfelds werden definiert tf_height = 20 tf_x = win_width - (tf_width + 32) tf_y = 28 but_x = 64 ;die Maße des Standartbuttons werden definiert but_y = 3*lbl_y but_width = 96 but_height = 24 ;nun werden Labels, TExtfelder und Buttons angezeigt lbl_spath = CreateLabel("Dateipfad der Karte: ", lbl_x, 1*lbl_y, 150, 16, win_save, 0) tf_spath = CreateTextField(tf_x, lbl_y - 4, tf_width - 32, tf_height, win_save, 0) but_spath = CreateButton("...", win_width - (tf_height + 32), lbl_y - 4, tf_height, tf_height, win_save, 1) SetGadgetText tf_spath, "C:\Users\*\Documents\Programmieren\Blitz\TilemapGenerator" lbl_sname = CreateLabel("Name der Karte: ", lbl_x, 2*lbl_y, 150, 16, win_save, 0) tf_sname = CreateTextField(tf_x, 2*lbl_y - 4, tf_width - 48, tf_height, win_save, 0) lbl_sending = CreateLabel(".map", tf_x + tf_width - 32, 2*lbl_y, 32, 16, win_save, 0) but_ok = CreateButton("OK", but_x, but_y, but_width, but_height, win_save, 4) but_cancel = CreateButton("Abbrechen", win_width - (but_width + but_x), but_y, but_width, but_height, win_save, 5) Repeat Select WaitEvent() ;gedrückte Buttons werden abgefragt (bzw. das Schließen-Kreuz) Case $401 button = EventSource() If button = but_path selected_path$ = RequestDir("Dateipfad auswählen", "C:\Users\*\Documents\Programmieren\Blitz\TilemapGenerator") SetGadgetText tf_spath, selected_path$ ElseIf button = but_ok spath$ = TextFieldText(tf_spath) sname$ = TextFieldText(tf_sname) map_name$ = spath$ + "\" + sname$ If map_failed = 0 map_file = WriteFile(map_name$ + ".map") WriteLine map_file, set_path$ WriteInt map_file, tile_size WriteInt map_file, set_number WriteInt map_file, map_width WriteInt map_file, map_height WriteInt map_file, tile_active WriteInt map_file, tile_selected For x = 0 To map_width For y = 0 To map_height WriteInt map_file, map(x,y) Next Next FreeGadget win_save map_done = 1 EndIf map_failed = 0 ElseIf button = but_cancel FreeGadget win_save ;hier stürzt nun auch das Haupfenster win_main ab EndIf Case $803 FreeGadget win_save ;hier stürzt nun auch das Haupfenster win_main ab End Select Until map_done = 1 CloseFile map_file End Function Hier unten ist nochmal der vollständige Code, falls ihn jemand sehen will (und was vermutlich auch notwendig ist): Code: [AUSKLAPPEN] ;Wildlands TMG - WildLands Tilemapgenerator v0.01
SeedRnd MilliSecs() ;Ausgangswerte für Zufallsbefehle werden initialisiert Global window_width, window_height, window_x, window_y, win_main Global set_path$, tile_size, set_number, map_width, map_height ;Deklaration der Kartenvariablen Global set_graphic, mouse_x, mouse_y, tile_active, tile_selected, selection_size, map_scroll_x, map_scroll_y Global cue_counter = 0 window_width = Int(ClientWidth(Desktop()) * 0.75 / 16) * 16 window_height = Int(ClientHeight(Desktop())* 0.75 / 16) * 16 window_x = (ClientWidth(Desktop()) - window_width) / 2 window_y = (ClientHeight(Desktop()) - window_height) / 2 win_main = CreateWindow("Wildlands TMG", window_x, window_y, window_width, window_height, Desktop(), 15) ;Grafikfenster mit 3/4 der Bildschirmgröße rt_menu_file = CreateMenu("Datei", 10, WindowMenu(win_main)) menu_new = CreateMenu("Neue Karte...", 11, rt_menu_file) menu_line12 = CreateMenu("", 12, rt_menu_file) menu_save = CreateMenu("Speichern unter...", 13, rt_menu_file) menu_load = CreateMenu("Laden...", 14, rt_menu_file) menu_line15 = CreateMenu("", 15, rt_menu_file) menu_end = CreateMenu("Beenden", 16, rt_menu_file) UpdateWindowMenu(win_main) Global can_x = 16 Global can_y = 16 Global can_width = window_width - 4*16 Global can_height = window_height - 7*16 Global can_mapedit = CreateCanvas(16, 16, window_width-54, window_height-112, win_main, 65536) SetBuffer CanvasBuffer(can_mapedit) ConfigurateMap() Dim map(200, 200) Canvas() Function Canvas() Repeat Cls DrawMap() DrawSelection() ScrollMap() SelectTileScroll() SelectTileMouse() PrintTileInfo() If MouseDown(1) Then DrawTile() If MouseDown(2) Then DeleteTile() If KeyDown(31) Then SaveMap() If KeyDown(38) Then LoadMap() If KeyDown(49) For y = 0 To map_height For x = 0 To map_width map(x,y) = 0 Next Next ConfigurateMap() EndIf If KeyHit(1) end_prog = Confirm("Soll das Programm beendet werden?", 0) If end_prog = 1 Then End EndIf Select WaitEvent() Case $803 End Case $1001 Select EventData() Case 11 ConfigurateMap() Case 13 SaveMap() Case 14 LoadMap() Case 16 end_prog = Confirm("Soll das Programm beendet werden?", 0) If end_prog = 1 Then End End Select End Select FlipCanvas can_mapedit Forever End Function Function ConfigurateMap() cue_counter = cue_counter + 1 win_width = 24*16 win_height = 18*16 win_config = CreateWindow ("Wildlands TMG - Einstellungen", window_x+16, window_y+16, win_width, win_height, win_main, 1) lbl_width = 160 lbl_height = 16 lbl_x = 32 lbl_y = 32 tf_width = 160 tf_height = 20 tf_x = win_width - (tf_width + 32) tf_y = 28 but_x = 64 but_y = 7*lbl_y but_width = 96 but_height = 24 lbl_set_path = CreateLabel("Dateipfad des Tilesets: ", lbl_x, 1*lbl_y, 150, 16, win_config, 0) tf_set_path = CreateTextField(tf_x, lbl_y - 4, tf_width - 32, tf_height, win_config, 0) but_set_path = CreateButton("...", win_width - (tf_height + 32), lbl_y - 4, tf_height, tf_height, win_config, 1) SetGadgetText tf_set_path, "C:\Users\*\Documents\Programmieren\Blitz\TilemapGenerator" lbl_set_name = CreateLabel("Name des Tilesets: ", lbl_x, 2*lbl_y, 150, 16, win_config, 0) tf_set_name = CreateTextField(tf_x, 2*lbl_y - 4, tf_width, tf_height, win_config, 0) SetGadgetText tf_set_name, "tileset_ground.png" lbl_tile_size = CreateLabel("Größe der einzelnen Tiles: ", lbl_x, 3*lbl_y, 150, 16, win_config, 0) tf_tile_size = CreateTextField(tf_x, 3*lbl_y - 4, tf_width, tf_height, win_config, 0) SetGadgetText tf_tile_size, "16" lbl_tile_number = CreateLabel("Anzahl der Tiles im Set: ", lbl_x, 4*lbl_y, 150, 16, win_config, 0) tf_tile_number = CreateTextField(tf_x, 4*lbl_y - 4, tf_width, tf_height, win_config, 0) SetGadgetText tf_tile_number, "15" lbl_map_width = CreateLabel("Breite der Karte: ", lbl_x, 5*lbl_y, 150, 16, win_config, 0) tf_map_width = CreateTextField(tf_x, 5*lbl_y - 4, tf_width, tf_height, win_config, 0) SetGadgetText tf_map_width, "20" lbl_map_height = CreateLabel("Höhe der Karte: ", lbl_x, 6*lbl_y, 150, 16, win_config, 0) tf_map_height = CreateTextField(tf_x, 6*lbl_y - 4, tf_width, tf_height, win_config, 0) SetGadgetText tf_map_height, "20" but_ok = CreateButton("OK", lbl_x, but_y, but_width, but_height, win_config, 4) but_default = CreateButton("Zurücksetzen...", (win_width / 2) - (but_width / 2), but_y, but_width, but_height, win_config, 4) but_cancel = CreateButton("Abbrechen", win_width - (but_width + lbl_x), but_y, but_width, but_height, win_config, 5) Repeat Select WaitEvent() Case $401 button = EventSource() If button = but_set_path selected_path$ = RequestDir("Dateipfad auswählen", "C:\Users\*\Documents\Programmieren\Blitz\TilemapGenerator") SetGadgetText tf_set_path, selected_path$ ElseIf button = but_ok path$ = TextFieldText(tf_set_path) name$ = TextFieldText(tf_set_name) set_path$ = path$ + "\" + name$ If LoadImage(set_path$) = 0 Confirm "Dateipfad konnte nicht gefunden werden!", 1 map_failed = 1 EndIf t_size$ = TextFieldText(tf_tile_size) s_number$ = TextFieldText(tf_tile_number) m_width$ = TextFieldText(tf_map_width) m_height$ = TextFieldText(tf_map_height) tile_size = Int(t_size$) set_number = Int(s_number$) map_width = Int(m_width$) map_height = Int(m_height$) If map_width > 200 SetGadgetText tf_map_width, "200" map_width = 200 EndIf If map_height > 200 SetGadgetText tf_map_height, "200" map_height = 200 EndIf If map_failed = 0 FreeGadget win_config map_done = 1 CreateMap() EndIf map_failed = 0 ElseIf button = but_default SetGadgetText tf_set_path, "C:\Users\*\Documents\Programmieren\Blitz\TilemapGenerator" SetGadgetText tf_set_name, "tileset_ground.png" SetGadgetText tf_tile_size, "16" SetGadgetText tf_map_width, "20" SetGadgetText tf_map_height, "20" ElseIf button = but_cancel If cue_counter = 1 Then End If cue_counter > 1 Then FreeGadget win_config EndIf Case $803 If cue_counter = 1 Then End If cue_counter > 1 Then FreeGadget win_config End Select Until map_done = 1 End Function Function CreateMap() set_graphic = LoadAnimImage(set_path$, tile_size, tile_size, 0, set_number) tile_active = 0 tile_selected = 0 selection_size = 3*tile_size map_scroll_x = Int(((can_width / 2) - (map_width * tile_size) / 2) / tile_size) * tile_size map_scroll_y = Int(((can_height / 2) - (map_width * tile_size) / 2) / tile_size) * tile_size End Function Function DrawMap() For y = 0 To map_height For x = 0 To map_width If y * tile_size + map_scroll_y < can_height - selection_size DrawBlock set_graphic, x * tile_size + map_scroll_x, y * tile_size + map_scroll_y, map(x,y) EndIf Next Next End Function Function DrawSelection() For i = 0 To set_number - 1 DrawBlock set_graphic, tile_size + 2*i*tile_size, can_height + tile_size - selection_size, i If i = tile_selected Rect tile_size - 4 + 2*i*tile_size, can_height + tile_size - (selection_size + 4), tile_size + 8, tile_size + 8, 0 Rect tile_size - 2 + 2*i*tile_size, can_height + tile_size - (selection_size + 2), tile_size + 4, tile_size + 4, 0 EndIf Next End Function Function SelectTileScroll() mouse_scroll = MouseZSpeed() If mouse_scroll < 0 And tile_active < set_number - 1 tile_active = tile_active + 1 tile_selected = tile_selected + 1 EndIf If mouse_scroll > 0 And tile_active > 0 tile_active = tile_active - 1 tile_selected = tile_selected - 1 EndIf End Function Function SelectTileMouse() mouse_x = MouseX(can_mapedit) mouse_y = MouseY(can_mapedit) For i = 0 To set_number - 1 If MouseDown(1) And mouse_x > tile_size + 2*i*tile_size And mouse_x < 2*tile_size + 2*i*tile_size If mouse_y > can_height + tile_size- selection_size And mouse_y < can_height + tile_size - (selection_size - tile_size) tile_active = i tile_selected = tile_active EndIf EndIf Next End Function Function PrintTileInfo() Text MouseX(can_mapedit) + 20, MouseY(can_mapedit) + 20, tile_active + 1 End Function Function DrawTile() mouse_x = (MouseX(can_mapedit) - map_scroll_x) / tile_size mouse_y = (MouseY(can_mapedit) - map_scroll_y) / tile_size If mouse_x => 0 And mouse_x < map_width + 1 And mouse_y >= 0 And mouse_y < map_height + 1 Then map(mouse_x, mouse_y) = tile_active End Function Function DeleteTile() mouse_x = (MouseX(can_mapedit) - map_scroll_x) / tile_size mouse_y = (MouseY(can_mapedit) - map_scroll_y) / tile_size If mouse_x => 0 And mouse_x < map_width + 1 And mouse_y >= 0 And mouse_y < map_height + 1 Then map(mouse_x, mouse_y) = 0 End Function Function ScrollMap() If KeyDown(200) And map_scroll_y < can_height - (selection_size + tile_size) ;Oben map_scroll_y = map_scroll_y + tile_size Delay 10 EndIf If KeyDown(208) And map_scroll_y > 0 - map_height * tile_size ;Unten map_scroll_y = map_scroll_y - tile_size Delay 10 EndIf If KeyDown(203) And map_scroll_x < can_width ;Links map_scroll_x = map_scroll_x + tile_size Delay 10 EndIf If KeyDown(205) And map_scroll_x > 0 - map_width * tile_size ;Rechts map_scroll_x = map_scroll_x - tile_size Delay 10 EndIf End Function Function SaveMap() win_width = 24*16 win_height = 10*16 win_save = CreateWindow ("Wildlands TMG - Karte Speichern", window_x+16, window_y+16, win_width, win_height, win_main, 1) lbl_width = 160 lbl_height = 16 lbl_x = 32 lbl_y = 32 tf_width = 160 tf_height = 20 tf_x = win_width - (tf_width + 32) tf_y = 28 but_x = 64 but_y = 3*lbl_y but_width = 96 but_height = 24 lbl_spath = CreateLabel("Dateipfad der Karte: ", lbl_x, 1*lbl_y, 150, 16, win_save, 0) tf_spath = CreateTextField(tf_x, lbl_y - 4, tf_width - 32, tf_height, win_save, 0) but_spath = CreateButton("...", win_width - (tf_height + 32), lbl_y - 4, tf_height, tf_height, win_save, 1) SetGadgetText tf_spath, "C:\Users\*\Documents\Programmieren\Blitz\TilemapGenerator" lbl_sname = CreateLabel("Name der Karte: ", lbl_x, 2*lbl_y, 150, 16, win_save, 0) tf_sname = CreateTextField(tf_x, 2*lbl_y - 4, tf_width - 48, tf_height, win_save, 0) lbl_sending = CreateLabel(".map", tf_x + tf_width - 32, 2*lbl_y, 32, 16, win_save, 0) but_ok = CreateButton("OK", but_x, but_y, but_width, but_height, win_save, 4) but_cancel = CreateButton("Abbrechen", win_width - (but_width + but_x), but_y, but_width, but_height, win_save, 5) Repeat Select WaitEvent() Case $401 button = EventSource() If button = but_path selected_path$ = RequestDir("Dateipfad auswählen", "C:\Users\*\Documents\Programmieren\Blitz\TilemapGenerator") SetGadgetText tf_spath, selected_path$ ElseIf button = but_ok spath$ = TextFieldText(tf_spath) sname$ = TextFieldText(tf_sname) map_name$ = spath$ + "\" + sname$ If map_failed = 0 map_file = WriteFile(map_name$ + ".map") WriteLine map_file, set_path$ WriteInt map_file, tile_size WriteInt map_file, set_number WriteInt map_file, map_width WriteInt map_file, map_height WriteInt map_file, tile_active WriteInt map_file, tile_selected For x = 0 To map_width For y = 0 To map_height WriteInt map_file, map(x,y) Next Next FreeGadget win_save map_done = 1 EndIf map_failed = 0 ElseIf button = but_cancel FreeGadget win_save EndIf Case $803 FreeGadget win_save End Select Until map_done = 1 CloseFile map_file End Function Function LoadMap() win_width = 24*16 win_height = 10*16 win_load = CreateWindow ("Wildlands TMG - Karte Speichern", window_x+16, window_y+16, win_width, win_height, win_main, 1) lbl_width = 160 lbl_height = 16 lbl_x = 32 lbl_y = 32 tf_width = 160 tf_height = 20 tf_x = win_width - (tf_width + 32) tf_y = 28 but_x = 64 but_y = 3*lbl_y but_width = 96 but_height = 24 lbl_lpath = CreateLabel("Dateipfad der Karte: ", lbl_x, 1*lbl_y, 150, 16, win_load, 0) tf_lpath = CreateTextField(tf_x, lbl_y - 4, tf_width - 32, tf_height, win_load, 0) but_lpath = CreateButton("...", win_width - (tf_height + 32), lbl_y - 4, tf_height, tf_height, win_load, 1) SetGadgetText tf_lpath, "C:\Users\*\Documents\Programmieren\Blitz\TilemapGenerator" lbl_lname = CreateLabel("Name der Karte: ", lbl_x, 2*lbl_y, 150, 16, win_load, 0) tf_lname = CreateTextField(tf_x, 2*lbl_y - 4, tf_width - 48, tf_height, win_load, 0) lbl_sending = CreateLabel(".map", tf_x + tf_width - 32, 2*lbl_y, 32, 16, win_load, 0) but_ok = CreateButton("OK", but_x, but_y, but_width, but_height, win_load, 4) but_cancel = CreateButton("Abbrechen", win_width - (but_width + but_x), but_y, but_width, but_height, win_load, 5) Repeat Select WaitEvent() Case $401 button = EventSource() If button = but_path selected_path$ = RequestDir("Dateipfad auswählen", "C:\Users\*\Documents\Programmieren\Blitz\TilemapGenerator") SetGadgetText tf_lpath, selected_path$ ElseIf button = but_ok lpath$ = TextFieldText(tf_lpath) lname$ = TextFieldText(tf_lname) map_name$ = lpath$ + "\" + lname$ If map_failed = 0 map_file = ReadFile(map_name$ + ".map") set_path$ = ReadLine (map_file) tile_size = ReadInt (map_file) set_number = ReadInt (map_file) map_width = ReadInt (map_file) map_height = ReadInt (map_file) tile_active = ReadInt (map_file) tile_selected = ReadInt (map_file) For x = 0 To map_width For y = 0 To map_height map(x,y) = ReadInt (map_file) Next Next FreeGadget win_load CreateMap() map_done = 1 EndIf map_failed = 0 ElseIf button = but_cancel FreeGadget win_load EndIf Case $803 FreeGadget win_load End Select Until map_done = 1 End Function Am Anfang werden alle möglichen Variablen global deklariert, dann die Maße des Fensters errechnet (3/4 der Bildschirmgröße) und schließlich das Grafikfenster gesetzt. Dann werden Menüs definiert, und dann die Maße des Canvasfensters (ich habe 16x16 große Felder als Maßstab für alles genommen, Fenstergrößen, Textabstände etc.). Mit ConfigurateMap() wird das Einstellungsfenster erstellt und die Mapdaten abgefragt. Mit Canvas() wird die Grafikschleife des Karteneditorcanvas erstellt, mit DrawMap() wird die Karte gezeichnet, mit DrawSelection() ein kleines Tileauswahlfenster unten auf der Canvasleinwand erstellt, mit ScrollMap() lässt sich die Karte durch die Pfeiltasten scrollen. Mit SelectTileScroll() lässt sich der aktive Tile durch das Scrollrad auswählen (1. Problem!), mit PrintTileInfo wird der aktive Tile neben dem Cursor angezeigt. Dann folgen Tastenabfragen: bei linker Maustaste wird der aktive Tile bei Position des Mauszeigers gesetzt, bei rechter gelöscht. Mit "S" wird die Karte gespeichert, mit "L" eine neue geladen. Mit "N" wird erst die Karte geleert (das ändere ich später noch) und dann wieder das Einstellungsfenster angezeigt. Darunter kommen etwas später die Menüabfragen, die dieselbe Funktion haben wie die Tastenkürzel. |
||
- Zuletzt bearbeitet von Bamboo am Mo, Apr 18, 2011 20:33, insgesamt 3-mal bearbeitet
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Select WaitEvent()
Fix #1: Select PeekEvent() oder Fix #2: CreateTimer Durch den rest des Textes steig ich nicht durch, zu viel einer Wand, zu wenig strukturiert. |
||
Warbseite |
Bamboo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Gut, wartet bitte, ich versuch das alles noch mal zu kürzen und nur das wichtigste zu lassen.
Edit: Also du meinst, dass mit dem Scrollen liegt an Delay? Ich weiß, man soll es ja grundsätzlich nicht nehmen, aber auch wenn man es auslässt ist es so. Oder meinst du das als genereller Fix? |
||
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
Delay ist so oder so schlimm.
WaitEvent wartet auf ein Event im Fenster. Ein tastendruck generiert WM_KEY_DOWN und das loslassen WM_KEY_UP. Manchmal generiert windows selbst ein WM_UPDATE und WM_DRAW event, was aber nicht ausreicht. Also musst du dir selber aushelfen. Entweder mit Timer und WaitEvent(Timer generieren einen Timer Event) oder PeekEvent, wodurch dein Programm die volle CPU ungebremst ziehen würde. |
||
Warbseite |
Bamboo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat: Delay ist so oder so schlimm.
Ja, ich weiß ja schon, aber daran liegt das Problem nicht; zumindest habe ich es rausgenommen und ich hatte denselben Fehler. Ich habe jetzt auch versucht, den oberen Code übersichtlicher zu gestalten. Und mir war schon klar, dass man nicht sofort das Programm versteht und den Fehler erkennt, aber das habe ich ja auch nicht verlangt. Beziehen sich deine Tipps jetzt direkt auf die Fehler oder würdest du mir "nur" generell dazu raten? |
||
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Fixes beziehen sich auf das "Maus bewegen->Kein scrolllag, maus nicht bewegen->scroll lag" | ||
Warbseite |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich finde z.B. WaitEvent( 16 ) ziemlich gut, da sowohl ein "Timer" (Delay) drin ist als auch die komplette Event-Abfrage (PeekEvent übergibt keine Parameter an EventSource etc.
mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
stimmt ToeB, da war ich schon zu weit auf dem API Level wo PeekEvent nur das Event holt aber nicht löscht.
WaitEvent(16) ist auch eine 'naja' Alternative. Diese 16msec sind nur das maximale das er warten soll, nicht erzwungen. D.H. wenn jemand die Maus bewegt geht es wieder schneller(Zwar nicht so extrem schneller aber doch schneller). Das beste wäre zwar eine ausstrukturierung von Event-Schleife und Main-Schleife, wobei die Event-Schleife nur läuft wenn PeekEvent ein Event zurückliefert und du dieses dann per WaitEvent(1) abfangst. |
||
Warbseite |
Bamboo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das klingt ja schon mal gut, danke! Ich werde es gleich ausprobieren!
EDIT: Danke, das hat schonmal funktioniert. Aber wie stehts mit den anderen Problemen, insbesondere 3. (also das Abstürzen des Programms beim Schließen von Nebenfenstern? |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group