[GastForen Archiv Adobe Flash & ActionScript HTTPService Adresse in Abhängigkeit einer anderen HTTPService Anfrage

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Archiv - Archivierte Foren
Themen
Beiträge
Moderatoren
Letzter Beitrag

HTTPService Adresse in Abhängigkeit einer anderen HTTPService Anfrage

Gerald Singelmann
Beiträge gesamt: 6269

7. Feb 2011, 00:41
Beitrag # 1 von 3
Bewertung:
(2605 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

Nachdem ich den ganzen Tag Google durchforstet und Gefundenes ausprobiert habe, muss ich aufgeben und versuchen, jemanden direkt zu fragen.

Ich habe ein Flex 3 Projekt, in dem ich eine aus einer XML Datei ausgelesene Übersicht generiere. Es sind potentiell sehr viele verschiedene XML Dateien zur Auswahl; welche genommen werden soll übergebe ich als Flash-Vars.

Die Flash-Var wird nach creationComplete ausgelesen und in {section} geschrieben.

Das ist soweit einfach und geradeaus und findet sich in diversen Büchern, Tutorials etc in leichten Variationen so wieder und funktioniert. Die Codezeile für den HTTPService ist
Code
<mx:HTTPService id="getSlides" url="assets/{section}/SlideShow.xml" result="read_slide_list(event)" /> 



Aber: Jetzt kommt eine Änderung der Anforderung vom Kunden.
Das hat zur Folge, dass die Section nicht mehr direkt per Flash-Var übergeben wird, sondern in der Flash-Var steht ein Wert, den ich ein einer XML-Datei nachschlagen muss, wodurch ich die Section rauskriege.
Gewissermaßen eine Art Index: in der Flash-Var steht der anzuzeigende Begriff, und in der XML-Datei ist verzeichnet, in welchem Kapitel welcher Begriff vorkommt.

Meine Ansätze sind bisher alles Variationen von
Code
<mx:HTTPService id="wordList" url="assets/word_list.xml" result="read_word_list(event)" resultFormat="e4x" /> 
<mx:HTTPService id="getSlides" url="assets/{section}/SlideShow.xml" result="read_slide_list(event)" />


, wobei die Variable section des zweiten services in dem Handler read_word_list des ersten services gesetzt wird.

Bei diesem Ansatz ist es aber so, dass es anscheinend keine Möglichkeit gibt, dass der Zugriff auf die Wortliste stattfindet, bevor die zweite Zeile aufgebaut wird.
Der HTTPService getSlides verweist also anscheinend immer auf den Default-Wert von section, weil die XML-Datei von wordList zu spät ausgewertet wird.

Ich habe auch schon versucht, die Wortliste nicht per HTTPService auszulesen, sondern direkt in der init-Funktion in AS gecoded. Aber das Timing-Verhalten ist bei mir das gleiche.
Ich habe vorhin den Versuch abgebrochen, auch getSlides in ActionScript selbst umzusetzen, weil die Umwandlung von XML und eine ArrayCollection noch einige andere Hürden birgt.


Ich kann mir nicht vorstellen, dass das eine so abgefahrene Anforderung ist und hatte gedacht, ich würde im Netz irgendwo einen Ansatz finden.

Aber anscheinend suche ich falsch.

Kann mir hier einer auf die Sprünge helfen?

Vielen Dank und beste Grüße
Gerald

(Dieser Beitrag wurde von Gerald Singelmann am 7. Feb 2011, 00:41 geändert)
X

HTTPService Adresse in Abhängigkeit einer anderen HTTPService Anfrage

Neil77
Beiträge gesamt: 287

7. Feb 2011, 16:32
Beitrag # 2 von 3
Beitrag ID: #464051
Bewertung:
(2562 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich kann nur recht abstrakt antworten, da ich speziell mit der Flex-Syntax keine Erfahrung habe, aber:

Der grundsätzliche Ansatz müsste sein, den zweiten HTTPService (getSlides) innerhalb des read_word_list-Handlers zu initialisieren, (also dort, wo auch section gesetzt wird) anstatt auf den ersten HTTPService folgend.
So wie es jetzt da steht, kann es aufgrund der asynchronen Event-Bearbeitung nicht klappen.

Wie gesagt: Mit genauerem Code kann ich nicht dienen, aber vielleicht hilft der Anstoß schon einmal ...?

Grüße, Martin


als Antwort auf: [#463954]

HTTPService Adresse in Abhängigkeit einer anderen HTTPService Anfrage

Gerald Singelmann
Beiträge gesamt: 6269

8. Feb 2011, 12:06
Beitrag # 3 von 3
Beitrag ID: #464122
Bewertung:
(2527 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

danke für die Anregung.

Ich hab's mit zwei HTTPServices zum Laufen gekriegt. Der Trick war, die send() Methode des zweiten Services erst im Handler des ersten aufzurufen.

Grüßle
Gerald


als Antwort auf: [#464051]