ungeprüft würde ich das so machen:
Code: Alles auswählen
Global NewList BufferElement()
Procedure OpenBuffer(Sprite)
UseBuffer(Sprite)
AddElement(BufferElement())
BufferElement() = Sprite
EndProcedure
Procedure CloseBuffer()
DeleteElement(BufferElement())
If CountList(BufferElement())
UseBuffer(BufferElement())
Else
UseBuffer(-1)
EndIf
EndProcedure
So kannst du ein Buffer öffen, und danach wiederum noch einen, wenn du den inneren dann wieder schließt, wird wieder zum alten Buffer gesprungen, oder zu -1 wenn keiner mehr da ist.
EDIT:
Man könnte es auch mit Macros machen, sodass du weiter hin UseBuffer verwenden kannst, aber im Macro dann jedoch die Buffer-Aufruf-Reihenfolge gespeichert wird. danach könnte man dann eine neue Konstante einführen zB. #PB_OldBuffer = -2 was dann bedeutet das wieder zum letzteren Buffer gesprungen wird.
Also so: (code ungeprüft)
So kannst du wie gewohnt UseBuffer verwenden, und wenn du ihn nicht mehr brauchst, dann schießt du ihn mit UseBuffer(#PB_OldBuffer) was dann entweder zum Screen zurück geht (-1) oder zum letzteren Buffer
Code: Alles auswählen
Global NewList BufferElement()
#PB_OldBuffer = -2
Procedure MyUseBuffer(Sprite)
If Sprite = #PB_OldBuffer
DeleteElement(BufferElement())
If CountList(BufferElement())
UseBuffer(BufferElement())
Else
UseBuffer(-1)
EndIf
Else
UseBuffer(Sprite)
AddElement(BufferElement())
BufferElement() = Sprite
EndIf
EndProcedure
Macro UseBuffer(Sprite)
MyUseBuffer(Sprite)
EndMacro