PureBasic Objekte
Einführung
Der Sinn dieses Kapitels besteht darin, das Verhalten, die Erstellung und die Handhabung von Objekten in PureBasic zu beschreiben. Zur Demonstration verwenden wir das Image (Bild) Objekt, aber dieselbe Logik gilt auch für alle anderen PureBasic Objekte. Wenn wir ein Image-Objekt erstellen, können wir dies auf zwei Weisen tun: indexiert und dynamisch.
I. Indexierte Nummerierung
Der statische bzw. indexierte Weg ermöglicht Ihnen, auf ein Objekt durch einen vordefinierten numerischen Wert zu verweisen. Die erste verfügbare Index-Zahl ist 0, weitere Indizes werden anschließend fortlaufend (sequentiell) zugeordnet. Dies bedeutet, wenn Sie die Index-Nummer 0 und dann die Nummer 1000 verwenden, werden 1001 Indizes reserviert und 999 (von 1 bis 999) bleiben unbenutzt, welches keine effiziente Art und Weise zur Benutzung von indexierten Objekten darstellt. Wenn Sie eine flexiblere Methode brauchen, verwenden Sie die dynamische Art zum Zuordnen von Objekten, wie im Abschnitt II. beschrieben.
Der indexierte Weg bietet mehrere Vorteile an:Die maximale Index-Zahl wird auf eine obere Grenze (normalerweise von 5000 bis 60000) beschränkt und hängt vom Objekttyp ab. Enumerations (Aufzählungen) sind ausdrücklich zu empfehlen, wenn Sie mit fortlaufenden Konstanten zur Identifizierung von Objekten (was ebenso empfehlenswert ist) arbeiten möchten.- Einfachere Handhabung, da keine Variablen oder Arrays benötigt werden.
- 'Gruppen' Verarbeitung, ohne die Notwendigkeit eines zwischenzeitlichen Arrays.
- Benutzung des Objekts in Prozeduren, ohne irgendetwas global definierten zu müssen (bei Verwendung einer Konstante oder Zahl).
- Ein Objekt, das mit einem Index verknüpft ist, wird bei erneuter Nutzung dieses Index automatisch freigegeben.Beispiel
CreateImage(0, 640, 480) ; Erstellt ein Bild, die n°0 ResizeImage(0, 320, 240) ; Verändert die Größe des n°0 BildsBeispiel
CreateImage(2, 640, 480) ; Erstellt ein Bild, die n°2 ResizeImage(2, 320, 240) ; Verändert die Größe des n°2 Bilds CreateImage(2, 800, 800) ; Erstellt ein neues Bild mit dem n°2 Index, das alte wird automatisch freigegebenBeispiel
For k = 0 To 9 CreateImage(k, 640, 480) ; Erstellt 10 verschiedene Bilder, nummeriert von 0 bis 9 ResizeImage(k, 320, 240) ; Erstellt ein neues Bild mit dem n°2 Index, das alte wird automatisch freigegeben NextBeispiel
#ImageBackground = 0 #ImageButton = 1 CreateImage(#ImageBackground, 640, 480) ; Erstellt ein Hintergrund-Bild (n°0) ResizeImage(#ImageBackground, 320, 240) ; Verändert die Größe des Hintergrund-Bilds CreateImage(#ImageButton , 800, 800) ; Erstellt ein Bild (n°1)
II. Dynamische Nummerierung
Manchmal ist die indexierte Nummerierung nicht sehr praktisch, um dynamische Situationen zu handhaben, wo wir mit einer unbekannten Anzahl von Objekten umgehen müssen. PureBasic bietet eine einfache und komplementäre Möglichkeit, Objekte auf eine dynamische Art und Weise zu erstellen. Beide Methoden (indexiert und dynamisch) können gleichzeitig - ohne irgendeinen Konflikt - verwendet werden. Um ein dynamisches Objekt zu erstellen, müssen Sie die #PB_Any Konstante anstelle einer Index-Zahl angeben, und die dynamische Nummer wird als Ergebnis der entsprechenden Funktion zurückgegeben. Dann verwenden Sie einfach diese Nummer mit den anderen Objektfunktionen an der Stelle, wo Sie sonst eine indexierte Zahl verwenden würden (außer zum Erstellen eines neuen Objekts). Diese Art und Weise des Objekt-Handlings kann sehr nützlich sein, wenn es in Verbindung mit einer verknüpften Liste verwendet wird, welche auch einen dynamischen Weg des Speicherns darstellt.Beispiel
DynamicImage1 = CreateImage(#PB_Any, 640, 480) ; Erstellen eines dynamisch nummerierten Bildes ResizeImage(DynamicImage1, 320, 240) ; Verändern der Größe von DynamicImage1Ein vollständiges Beispiel für dynamische Objekte und verknüpfte Listen finden Sie hier:Beispiel
MDI_ImageViewer.pb
Weitere Erläuterungen und ein Beispiel für dynamische Nummerierung mehrerer Fenster und Gadgets finden Sie im entsprechenden Kapitel des 'Einsteiger-Kapitels'.
Übersicht über die verschiedenen PureBasic-Objekte
Verschiedene PureBasic-Objekte (Fenster, Gadgets, Sprites, etc.) können den gleichen Bereich an Objekt-Nummern erneut verwenden. Somit können die folgenden Objekte jeweils beginnend bei 0 (oder einem anderen Wert) nummeriert werden und PureBasic unterscheidet sie anhand ihres Typs:- Database
- Dialog
- Entity
- File
- FTP
- Gadget (einschließlich dem ScintillaGadget())
- Gadget3D - Image
- Library
- Light
- Material
- Menu (nicht MenuItem(), da dies kein Objekt ist)
- Mesh
- Movie
- Music
- Network
- Node
- Particle
- RegularExpression
- SerialPort
- Sound
- Sound3D
- Sprite
- StatusBar
- Texture
- ToolBar
- Window
- Window3D
- XML