p-flash
Erfahrenes Mitglied
Hi,
ich möchte mit Hilfe einer XML-Datei die Ansicht generieren. Ich hatte mir überlegt die XML-Datei so aufzubauen:
Die Klassen-Methode createView(xmlStr : String) der Klasse ModifiableElement sorgt dann für die Generierung der Seite:
Dabei arbeitet die Methode ungefähr so:
Das klappt alles ganz gut. Das Problem ist, wenn ich ModifiableElement erweitern möchte. Also ExtendedModElem extends ModifiableElement. Und in der XML nun auch solche Elemente speichere:
Die Änderung ist bei class="ExtendedModElem"
D.h. dass createView(); jetzt unterscheiden muss ob ein ModifiableElement- oder ein ExtendedModElem-Objekt erstellt werden soll. Das würde so klappen:
Das Problem ist, dass bei jeder Klasse die dazu kommt, ModifiableElement.createView() angepasst werden müsste. (Außer weiß ich auch nicht ob es guter Stil ist in der Oberklasse explizit Unterklassen anzusprechen) Vor allem dauert die Berechnung natürlich ziemlich lange, wenn es mehrere dieser Klassen gibt (alle dieser Klassen sind (indirekte) Unterklassen von ModifiableElement).
Meine Frage ist, ob ihr vielleicht eine gute Idee habt, wie die XML-Struktur sein könnte um das Problem zu lösen. Oder ob die Klassenstruktur irgendwie so geändert werden sollte, dass das Problem gut gelöst werden kann.
Bin dankbar für jeden Tip.
p-flash
ich möchte mit Hilfe einer XML-Datei die Ansicht generieren. Ich hatte mir überlegt die XML-Datei so aufzubauen:
HTML:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<elements>
<modifiableElement id="1" attachId="dasMc_mc" class="ModifiableElement" sectionId="2">
<attributes scaleable="1" hideable="1" moveable="1" editable="0" posFixed="0" hidden="0" />
<container depth="4">_x:10;_y:50;_xscale:150;_yscale:150;...</container>
</modifiableElement>
.
.
.
</elements>
Die Klassen-Methode createView(xmlStr : String) der Klasse ModifiableElement sorgt dann für die Generierung der Seite:
Code:
ModifiableElement.createView(xmlStr);
Dabei arbeitet die Methode ungefähr so:
Code:
var nodes : Array = xmlStr.firstChild.childNodes;
for (var i = 0; i < nodes.length; i++)
{
var modElem : ModifiableElement = new ModifiableElement();
modElem.create(nodes[i]);
}
Das klappt alles ganz gut. Das Problem ist, wenn ich ModifiableElement erweitern möchte. Also ExtendedModElem extends ModifiableElement. Und in der XML nun auch solche Elemente speichere:
HTML:
.
.
<modifiableElement id="1" attachId="dasMc_mc" class="ExtendedModElem" sectionId="2">
<attributes scaleable="1" hideable="1" moveable="1" editable="0" posFixed="0" hidden="0" />
<container depth="4">_x:10;_y:50;_xscale:150;_yscale:150;...</container>
</modifiableElement>
.
.
Die Änderung ist bei class="ExtendedModElem"
D.h. dass createView(); jetzt unterscheiden muss ob ein ModifiableElement- oder ein ExtendedModElem-Objekt erstellt werden soll. Das würde so klappen:
Code:
// __class = der Wert in class="dieKlasse"
if (__class == "ModifiableElement") new ModifiableElement();
else if (__class == "ExtendedModElem") new ExtendedModElem();
Das Problem ist, dass bei jeder Klasse die dazu kommt, ModifiableElement.createView() angepasst werden müsste. (Außer weiß ich auch nicht ob es guter Stil ist in der Oberklasse explizit Unterklassen anzusprechen) Vor allem dauert die Berechnung natürlich ziemlich lange, wenn es mehrere dieser Klassen gibt (alle dieser Klassen sind (indirekte) Unterklassen von ModifiableElement).
Meine Frage ist, ob ihr vielleicht eine gute Idee habt, wie die XML-Struktur sein könnte um das Problem zu lösen. Oder ob die Klassenstruktur irgendwie so geändert werden sollte, dass das Problem gut gelöst werden kann.
Bin dankbar für jeden Tip.
p-flash