Inzwischen jetzt habe ich nun einen Beispiel-Code erstellt, der zeigt, um welches Problem es mir geht. Das Beispiel zeigt 10 weiße Boxen nebeneinander.
1) Wenn man jetzt z.B. die letzten 3 Boxen nacheinander anklickt, also von links nach rechts gezählt die Boxen 8-10, werden deren Zahlenwerte 8, 9 und 10 in der List "Beispiel.i()" gespeichert. Dies wird auch gleich per Debugger bestätigt.
2) Durch das Drücken der Taste W (=Wiedergabe) kann man sich nun anzeigen lassen, daß die Boxen-Zahlenwerte ordnungsgemäß aus der List abgerufen und wiedergegeben werden.
3) Die Back-Taste wird gedrückt, welche bei jedem Drücken dafür sorgt, daß es jeweils einen Schritt zurück geht.
4) Es werden erneut weiße Boxen angeklickt, z.B. die Boxen 2-4. Diese Werte werden dann wieder erfolgreich in der List gespeichert und der Debugger zeigt das auch an.
5) Das Drücken der Taste W bringt dann die Ernüchterung: Jetzt tauchen nicht die neuen, sondern erneut die alten Werte auf, allerdings läßt dann die allerletzte Anzeige im Debugger etwas erahnen... und tatsächlich: Wenn die Endlosschleifen-Sperre kl2 aus dem Code entfernt wird, werden in der Wiedergabe abwechselnd die alten, dann die neuen und dann wieder die alten Werte angezeigt. Und dann stoppt auch noch die Debugger-Ausgabe, obwohl doch die Schleife ohne die Sperre eigentlich immer weiter laufen müßte (?) Hier der Code:
Code: Alles auswählen
#Flags = #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_ScreenCentered
If InitMouse() = 0
MessageRequester("InitMouse fehlgeschlagen", "")
EndIf
If InitSprite() = 0
MessageRequester("InitSprite fehlgeschlagen", "")
EndIf
If InitKeyboard() = 0
MessageRequester("InitKeyboard fehlgeschlagen", "")
EndIf
If OpenWindow(1,0,0,800,412,"",#Flags) = 0
MessageRequester("OpenWindow fehlgeschlagen", "")
EndIf
If OpenWindowedScreen(WindowID(1),0,0,800,412) = 0
MessageRequester("OpenWindowedScreen fehlgeschlagen", "")
EndIf
StartDrawing(ScreenOutput())
Box(0,0,800,412,RGB(100,100,220)) ; gr. blaue Farbbox
StopDrawing(): FlipBuffers()
x = 21 ; Startpunkt linke obere Ecke
y = 302 ; Startpunkt linke obere Ecke
b = 22
h = 107 ; 107
For k = 1 To 10 ; wB.
StartDrawing(ScreenOutput())
Box(x,y,b,h,RGB(250,250,250))
StopDrawing()
x = x + 23
Next : FlipBuffers()
;____________________________________________________________________________________________________________________________________________________________________
NewList Beispiel.i()
kl1 = 1
kl2 = 1
kl3 = 1
Repeat
ExamineKeyboard()
Event = WaitWindowEvent()
Select Event
Case #PB_Event_LeftClick
kl1 = 1
wmx = WindowMouseX(1)
wmy = WindowMouseY(1)
Case #PB_Event_CloseWindow
schliessen = 1
EndSelect
If (wmx >= 21 And wmx <= 779) And (wmy > 302 And wmy < 408) And kl1 = 1
kl1 = 0
zahl = (wmx+2) / 23 ; steht für die Boxen 1 - 10
schritt = schritt + 1
Select schritt
Case 1
AddElement(Beispiel())
Beispiel() = zahl : Debug Beispiel()
Case 2
AddElement(Beispiel())
Beispiel() = zahl : Debug Beispiel()
Case 3
AddElement(Beispiel())
Beispiel() = zahl : Debug Beispiel()
Case 4
AddElement(Beispiel())
Beispiel() = zahl : Debug Beispiel()
Case 5
AddElement(Beispiel())
Beispiel() = zahl : Debug Beispiel()
Case 6
AddElement(Beispiel())
Beispiel() = zahl : Debug Beispiel()
Case 7
AddElement(Beispiel())
Beispiel() = zahl : Debug Beispiel()
Case 8
AddElement(Beispiel())
Beispiel() = zahl : Debug Beispiel()
Case 9
AddElement(Beispiel())
Beispiel() = zahl : Debug Beispiel()
Case 10
AddElement(Beispiel())
Beispiel() = zahl : Debug Beispiel()
EndSelect
EndIf
If KeyboardReleased(#PB_Key_W)
kl2 = 1
EndIf
; Taste W steht für Wiedergabe
If KeyboardPushed(#PB_Key_W) And kl2 = 1
kl2 = 0
For i = 1 To schritt
SelectElement(Beispiel(),i-1)
box = Beispiel() : Debug box
Next
EndIf
; Back-Taste erzeugt Schritt zurück
If KeyboardReleased(#PB_Key_Back)
kl3 = 1
EndIf
If KeyboardPushed(#PB_Key_Back) And kl3 = 1
kl3 = 0
schritt = schritt - 1
If schritt < 1
schritt = 1
EndIf
EndIf
Until schliessen = 1 Or KeyboardPushed(#PB_Key_F1)
End
Danke für Info.