In der Dokumentation von Flash 8 gibt es das Tutorial
25 "Datenintegration: XML für Zeitnachweise verwenden".
Dort wird ausführlich erklärt, wie man mit einigen Komponenten eine XML Datei in Flash darstellen kann. Diese Tipps sind nur eine verkürzte Form des Tutorials. Beim ersten mal, sollte man unbedingt das original Flashtutorial als Anleitung nehmen. Wenn man es einmal gemacht hat, kann man mit meinen verkürzten Anweisungen die Sache wiederholen.
XMLConnector-Komponente auf die Bühne
Instanznamen timeInfo_con
Registerkarte Parameter.
Parameter URL den
Text data.xml ein, und
Parameter direction Option receive.
DataSet-Komponente auf die Bühne.
Instanznamen timeInfo_ds
Wenn Sie mit der XMLConnector-Komponente eine Verbindung mit einer externen XML-Datenquelle herstellen, müssen Sie ein Schema angeben. Dies ist eine schematische Darstellung der Struktur des XML-Dokuments. Das Schema weist die XMLConnector-Komponente an, wie die XML-Datenquelle gelesen werden muss. Am einfachsten können Sie ein Schema angeben, indem Sie eine Kopie der XML-Datei importieren, mit der Sie eine Verbindung herstellen möchten, und dann diese Kopie als Schema verwenden.
Wählen Sie auf der Bühne die XMLConnector-Komponente aus.
Klicken Sie im Komponenteninspektor auf die Registerkarte Schema.
Eigenschaft results:XML
Klicken Sie oben rechts auf der Registerkarte Schema auf Schema aus einer XML-Beispieldatei
importieren.
Wählen Sie die XML Datei aus, in diesem Fall: data.xml
Auf der Registerkarte Schema wird jetzt die Struktur der Daten in der
Datei angezeigt. Der Knoten row ist einem ActionScript-Array mit
anonymen Objekten zugeordnet, da er sich innerhalb der XML-Datei
mehrmals wiederholt. Unterknoten oder Attribute, die sich direkt
unter dem Knoten row befinden, werden als Eigenschaften der
anonymen Objekte betrachtet, die im Array enthalten sind.
Weitere Informationen zur Übersetzung von XML-Dokumenten in
interne Schemadarstellungen durch Flash finden Sie unter
„Datenintegration (nur Flash Professional)“ in Flash verwenden.
---------------------------------------------------------------------------------------
Wählen Sie das Schemafeld Datum. Der Typ wurde auf String gesetzt. Wählen Sie den Parameter Datentyp für das Schemafeld Datum, und ändern Sie diesen in Datum.
Wählen Sie den Parameter Encoder für das Schemafeld Datum, und
ändern Sie diesen in Datum. Wählen Sie den Parameter für die
Encoder-Optionen, und wählen Sie den Wert MM/TT/JJJJ.
Doppelklicken Sie bei ausgewähltem Schemafeld @billable auf das
Feld Encoder-Optionen.
Dialogfeld Boolescher Encoder
Textfeld Strings, die TRUE bedeuten Text eingeben true
Strings, die FALSE bedeuten Text eingeben false
Wählen Sie das Schemafeld @duration.
Der Datentyp des Feldes wurde automatisch auf Integer gesetzt.
Ändern Sie diese in number, damit es nicht nur auf ganzzahlige Werte
beschränkt ist.
Klicken Sie im Komponenteninspektor auf die Registerkarte
Bindungen.
Klicken Sie auf die Schaltfläche Bindung hinzufügen.
Wählen Sie das Objekt row: Array
Eigenschaft direction auf Out.
Eigenschaft Bound To doppelklicken
im Dialogfeld Bound To die DataSet-Komponente,
Schema-Standort dataProvider:Array
Die DataBinding-Komponente kopiert jedes Objekt im Array row in
einen neuen Datensatz (Übertragungsobjekt) in der DataSet-
Komponente. Beim Kopieren der Daten werden die ausgewählten
Einstellungen angewendet, so dass die DataSet-Komponente die
ActionScript-Felder Datum, Boolean und Zahl für die Attribute
@date, @billable und @duration erhält.
Als Nächstes erstellen Sie Felder für die DataSet-Komponente, die
denen der XMLConnector-Komponente entsprechen.
Wählen Sie die DataSet-Komponente aus
im Komponenteninspektor die Registerkarte Schema.
Komponenteneigenschaft hinzufügen (+), und geben
Sie für den Feldnamen id und für den DatentypInteger ein.
Erstellen Sie mithilfe desselben Verfahrens die folgenden neuen Felder:
■ Feldname = billable, Datentyp = Boolean
■ Feldname = date, Datentyp = Date
■ Feldname = duration, Datentyp = Number
■ Feldname = rate, Datentyp = Number
Wählen Sie das Datumsfeld, das Sie soeben erstellt haben. Wählen Sie
die Encoder-Einstellung, und ändern Sie diese in DateToNumber.
HINWEIS
Die Feldnamen müssen den Namen der jeweiligen Eigenschaften in der
XMLConnector-Komponente einschließlich Groß- und Kleinschreibung
genau entsprechen (@date = date, @billable = billable, @duration =
duration).
HINWEIS
Die DataSet-Komponente muss die Datumswerte intern im numerischen
Format speichern, damit sie richtig sortiert werden können. Wenn dieser
Wert eingestellt wurde, wandelt der DateToNumber-Encoder ein Datum
immer in eine Zahl um. Wird auf den Wert zugegriffen, wandelt er die Zahl
in ein Datum um.
Doppelklicken Sie bei ausgewähltem Datumsfeld auf das Feld
Formatierer im Komponenteninspektor, und wählen Sie aus dem
Popupmenü die Option Datum.
Doppelklicken Sie im Komponenteninspektor auf das Feld
Formatierer-Optionen.
Geben Sie im Dialogfenster Einstellungen im Datums-Formatierer in
das Textfeld Format MM-DD-YYYY ein.
Komponenten zum Anzeigen von Daten
Bedienfeld Komponenten die Kategorie User Interface,
DataGrid-Komponente auf die Bühne.
Instanznamen timeInfo_grd
Breite auf den Wert 360.
Klicken Sie im Komponenteninspektor auf die Registerkarte
Bindungen.
Bindung hinzufügen.
Dialogfeld Bindung hinzufügen dataprovider:Array.
Eigenschaft Bound
To auf die DataSet-Komponente,
Schema-Standort dataProvider:Array
Richtung auf in
bei ausgewähltem Datenraster Bindung hinzufügen
wähle
selectedIndex:Number ,
Eigenschaft Bound To auf DataSet-Komponente,
Schema-Standort selectedIndex:Number,
Eigenschaft Richtung auf in / out
Button-Komponenteninstanz auf die Bühne, und geben
Instanznamen loadData_btn.
im Feld Beschriftung den Text Load Data ein.
Achten Sie darauf, dass die Schaltfläche ausgewählt bleibt, und öffnen
Sie das Bedienfeld Verhalten (Fenster > Verhalten).
Verhalten hinzufügen (+), und wählen
Sie Daten > Datenquelle auslösen.
Wählen Sie
die Komponente timeInfo_con
Speichern Sie die Datei in dem Ordner, in dem die Datei data.xml
gespeichert ist.
Führen Sie die Anwendung aus, und klicken Sie auf die Schaltfläche
Load Data.
Diesen Teil habe ich noch nicht in verkürzter Form geschrieben. Das kommt aber noch.
Komponente XUpdateResolver auf die Bühne.
Instanznamen timeInfo_rs
Komponenteninspektor auf die Registerkarte Schema,
wählen Sie die Komponenteneigenschaft deltaPacket.
Encoder-Einstellung der DeltaPacket-Komponente auf
DataSetDeltaToXUpdateDelta.
Dieser Encoder wandelt Daten im DeltaPacket in XPath-Anweisungen
um, die an die XUpdateResolver-Komponente gesendet werden.
Hierfür müssen Sie jedoch noch weitere Informationen eingeben.
6. Doppelklickent Encoder-Optionen. Wenn Sie
aufgefordert werden, einen Wert für die Eigenschaft rowNodeKey
einzugeben, geben Sie datapacket/row[@id='?id'] ein.
Diese Eigenschaft gibt an, welcher Knoten in der XML-Datei als
Datensatz innerhalb des DataSet-Datensatzes behandelt wird. Sie legt
außerdem fest, welche Element- oder Attributkombination einen
Zeilenknoten als einmalig auszeichnet und welches Schemafeld in der
DataSet-Komponente den Knoten repräsentiert. Nähere
Informationen finden Sie unter „An eine externe Datenquelle
gesendete Aktualisierungen“ in Flash verwenden (klicken Sie in Flash
auf Hilfe > Flash verwenden).
In der XML-Beispieldatei bildet das Attribut id des Knotens
datapacket/row den einmaligen Bezeichner, der dem ID-Schemafeld
der DataSet-Komponenten zugeordnet wird. Dieser wird mit dem
folgenden Ausdruck definiert:
datapacket/row[@id=’?id’]
Registerkarte Bindungen.
Schaltfläche Bindung hinzufügen.
Eigenschaft wähle
deltaPacket
Doppelklicken Sie Bound To
wähle dataset
Komponente Schema-Standort
deltaPacket
Mit dieser Bindung wird DeltaPacket in die XUpdateResolver-
Komponente kopiert und kann dort manipuliert werden, bevor es an
den Server gesendet wird.
12. Ziehen Sie eine TextArea-Komponente auf die Bühne, und geben Sie
dieser im Eigenschafteninspektor den Instanznamen deltaText.
13. Legen Sie im Komponenteninspektor die Breite auf 360 fest.
HINWEIS
Die Daten werden kopiert, nachdem die Methode applyUpdates() der
DataSet-Komponente aufgerufen wurde.
320 Datenintegration: Zeitnachweise mit XUpdate aktualisieren (nur Flash Professional)
14. Wählen Sie die Komponente, und klicken Sie im
Komponenteninspektor auf die Registerkarte Bindung.
15. Klicken Sie auf die Schaltfläche Bindung hinzufügen.
16. Klicken Sie im Dialogfeld Bindung hinzufügen auf die Eigenschaft
text: String, und klicken Sie auf OK.
17. Doppelklicken Sie auf der Registerkarte Bindungen auf die Eigenschaft
Bound To.
18. Klicken Sie im Dialogfeld Gebunden an auf die Komponente
XUpdateResolver, und klicken Sie dann auf den Schema-Standort
xupdatePacket und auf OK.
Das Aktualisierungspaket enthält die modifizierte Version des
DeltaPackets, das an den Server gesendet wird.
19. Öffnen Sie im Bedienfeld Komponenten die Kategorie User Interface,
und ziehen Sie eine Komponente Button auf die Bühne.
20.Geben Sie im Eigenschafteninspektor den Instanznamen btn_show ein.
Klicken Sie im Komponenteninspektor auf die Registerkarte
Parameter, und ändern Sie die Bezeichnung in Show Updates.
21. Öffnen Sie bei ausgewählter Schaltfläche das Bedienfeld Aktionen (F9),
und geben Sie den folgenden Code ein:
on (click) {
_parent.timeInfo_ds.applyUpdates();
}
22.Testen Sie die Anwendung (Steuerung > Film testen). Laden Sie die
Daten, und nehmen Sie in mehreren Datensätzen Änderungen in einem
oder mehreren Feldern vor.
23.Klicken Sie auf Show Updates. Überarbeiten Sie das XML-Paket in der
TextArea-Komponente.
24.Versuchen Sie, den Parameter includeDeltaPacketInfo der
XUpdateResolver-Komponente mit dem Komponenteninspektor auf
true zu setzen.
TIPP
Sie können die
XML-Daten in den
von Ihnen
bevorzugten XMLEditor
laden, damit
diese besser lesbar
sind.
HINWEIS
Es werden zusätzliche Informationen zum Aktualisierungspaket
hinzugefügt. Diese Informationen können vom Server verwendet werden,
um diesen Aktualisierungsvorgang eindeutig zu kennzeichnen. Mit diesen
Informationen kann der Server ein Ergebnispaket erstellen, das von der
XUpdateResolver-Komponente und der DataSet-Komponente
verwendet wird, um die Client-Daten mit den Änderungen vom Server zu
aktualisieren.