Bezeichnung
moai.CreateObject -- erstellt ein MOAI-Objekt aus einer XML-Quelle
Übersicht
moai.CreateObject(xml$[, parent$])
Beschreibung
Dieser Befehl kann verwendet werden, um ein MOAI-Objekt dynamisch aus einer XML-Quelle zu erstellen. Wenn moai.CreateObject() beendet ist, wird das neu erstellte MOAI-Objekt nicht an ein übergeordnetes Objekt angefügt und befindet sich losgelöst (isoliert) von Ihrem Application-Objekt, das mit moai.CreateApp() erstellt wurde. Um diesen lösgelösten Zustand aufzuheben, müssen Sie das Objekt zuerst an ein übergeordnetes Objekt anhängen, bei dem es sich entweder um ein Gruppen-, ein Menü- oder ein Application-Objekt handeln kann. Wenn das neu zugewiesene MOAI-Objekt ein Fensterobjekt ist, müssen Sie es an das Application-Objekt anfügen, indem Sie die Methode Application.AddWindow verwenden. Um Menüobjekte anzuhängen, müssen Sie die Methoden Menubar.Prepend, Menubar.Append, Menubar.Insert, Menu.Prepend, Menu.Append oder Menu.Insert verwenden. Alle anderen Objekte können mit den Gruppenmethoden Group.Prepend, Group.Append und Group.Insert angefügt werden.

Für die meisten MOAI-Klassen müssen Sie im zweiten Parameter parent$ ein übergeordnetes Objekt angeben. RapaGUI wird das neue Objekt nicht an das übergeordnete Objekt anhängen, aber es muss immer noch das übergeordnete Objekt kennen, um bestimmte Einstellungen festlegen zu können. Die einzigen MOAI-Klassen, für die Sie kein übergeordnetes Objekt angeben müssen, sind die folgenden:

Bei allen anderen MOAI-Klassen müssen Sie den Identifikator des übergeordneten Objekts angeben.

Normalerweise müssen Sie nur den Identifikator des Fensters übergeben, an das Sie das MOAI-Objekt als übergeordnetes Objekt anhängen möchten. Es gibt eine Ausnahme: Wenn Sie planen, das MOAI-Objekt einer Gruppe mit einem Rahmen hinzuzufügen, d.h. eine Instanz von der Group-Klasse (Gruppen) mit Group.Frame auf True gesetzt, dann müssen Sie dieses Gruppenobjekt als übergeordnetes Objekt übergeben. Beachten Sie, dass dies nur für Gruppen mit einem Rahmen gilt. Wenn Sie vorhaben, das MOAI-Objekt einer normalen Gruppe hinzuzufügen, die keinen Rahmen hat, müssen Sie nur den Identifikator des Fensters an moai.CreateObject() übergeben. Beachten Sie jedoch, dass für den Fall, dass die normale Gruppe selbst nur ein Element ist, das irgendwo in der Hierarchie einer gerahmten Gruppe angehört, Sie den Identifikator dieser gerahmten Gruppe übergeben müssen. Wenn Sie Objekte zu einer Gruppe der Scrollgroup-Klasse hinzufügen, müssen Sie zudem auch den Identifikator dieser Scrollgroup als übergeordnetes Objekt übergeben.

Um es abstrakt auszudrücken: Das übergeordnete Objekt muss auf das nächste Objekt in der Layout-Hierarchie gesetzt werden, das eine visuelle Darstellung hat. Normale Gruppen sind nur Layout-Werkzeuge. Sie existieren nicht als Widget. Gerahmte Gruppen hingegen sind zwar Layout-Werkzeuge, aber sie sind auch Widgets, da sie eine visuelle Darstellung haben. Wenn Ihr Objekt also irgendwo in eine gerahmte Gruppe eingebettet werden soll, muss die gerahmte Gruppe als übergeordnetes Objekt übergeben werden. Wenn es in eine normale Gruppe eingebettet ist, dann muss das Fenster der obersten Ebene das übergeordnete Fenster sein. Vergessen Sie nicht, in Hierarchien zu denken: Auch wenn Sie Ihr Objekt an eine normale Gruppe anhängen wollen, kann es sein, dass die normale Gruppe selbst in eine gerahmte Gruppe eingebettet ist, was bedeutet, dass Sie die gerahmte Gruppe trotzdem als übergeordnete Gruppe übergeben müssen. Dies trifft auch auf Objekte der Scrollgroup-Klasse zu, da diese auch eine visuelle Darstellung haben.

Im Gegensatz zu moai.CreateApp() können Sie moai.CreateObject() beliebig oft aufrufen, da es kein Application-Objekt für Sie erstellt, sondern nur losgelöste MOAI-Objekte, von denen Sie beliebig viele haben können.

Es ist wichtig, dass Sie in der XML-Definition eine ID für Ihr MOAI-Objekt angeben, da Sie diese ID verwenden müssen, um auf dieses Objekt zu verweisen, wenn Sie es zu einem Application-, Menü- oder Gruppenobjekt hinzufügen möchten.

Sobald dieser Befehl beendet ist, können Sie mit dem neu erstellten MOAI-Objekt (und allen seinen untergeordneten) die Befehle moai.Set(), moai.Get() und moai.DoMethod() benutzen.

Losgelöste MOAI-Objekte können mit dem Befehl moai.FreeObject() gelöscht werden. Dies müssen Sie aber nur in bestimmten Fällen aufrufen, z.B. wenn Sie es mit vielen dynamisch zugewiesenen MOAI-Objekten zu tun haben und Sie etwas Speicher und Ressourcen sparen wollen.

Eingaben
xml$
eine Zeichenkette, die eine XML MOAI-Objektbeschreibung enthält
parent$
optional: gewünschtes übergeordnetes Objekt für das Objekt; Details siehe oben
Beispiel
moai.CreateObject([[
<window id="newwindow" title="A new window">
  <vgroup>
      <button id="btn">Hello World!</button>
   </vgroup>
</window>
]])

moai.DoMethod("app", "addwindow", "newwindow")
moai.Set("newwindow", "open", True)
Der obige Code erzeugt ein neues Fenster, fügt es dem bestehenden Application-Objekt hinzu und öffnet es.


moai.CreateObject([[
<button id="newbutton">Dynamically created button!</button>
]], "mywindow")

moai.DoMethod("mygroup", "initchange")
moai.DoMethod("mygroup", "append", "newbutton")
moai.DoMethod("mygroup", "exitchange", false)
Der obige Code erzeugt dynamisch ein neues Schaltflächen-Objekt und fügt es als letztes Element der Gruppe mit der ID "mygroup" hinzu.

Navigation zeigen