[MX 2004] Mit XML geladener String triggern?

luke_the_duke

Erfahrenes Mitglied
Hallo zusammen,

ich habe folgendes kleines Problem:
Ich lese einen langen Text (Firmen-Portrait) aus einer XML-Datei aus, ordne das Resultat des Ladevorgangs nach dessen erfolgreichem Abschliessen einem dynamischen (mit AS) Textfeld zu und rufe dann die Inititial-Funktion eines selbst erstellten Scrollers auf, um das Textfeld damit scrollen zu können. Nun setzt die Initial-Funktion des Scrollers zu früh ein, so dass nicht das ganze Textfeld mit erhaltenem String als ganzer Text gilt, sondern nur etwa 7/8 davon. Der Rest des Textes ist nicht sichtbar und kann auch nicht "herbeigescrollt" werden.
Ich müsste also quasi den Event "ganzer String im Textfeld angekommen und an die Eigenschaften des Textfeldes angepasst" kreieren, weiss aber nicht wie ich das tun soll. Der Text ist etwa 500 Zeichen lang und wird per onLoad-Event der XML-Klasse zugeordnet.

Ich habs auch schon mit dem onChange-Event der textField-Klasse probiert, doch der trifft auch nur einmal ein, nämlich dann, wenn das erste Zeichen des Strings ins Textfelds gesetzt wird.

Kann mir jemand helfen?

Gruss
 
Hi,

hmm... das Problem ist mir so noch nie untergekommen. Du könntest natürlich in einer onEnterFrame-Methode so lange warten, bis sich z.B. die textHeight-Eigenschaft des Textfeldes nicht mehr ändert (ich nehme an, .text.length gibt von Anfang an die endgültige Anzahl Zeichen zurück?).

.. oder Du modifizierst Deinen Scroller so, dass er auf Größenänderungen des Scrollziels reagiert (z.B: wie das meiner macht -> init bekommt Referenzen auf Container und Maske übergeben).

Gruß
.
 
Hallo,

ich habe, wie von dir empfohlen, nun eine laufende Anpassung des Scrollers an die Grösse des Ziel-MC's eingebaut und es funktioniert nun tadellos, danke für den Tip!

Ich habe aber an dieser Stelle eine Frage: Ich probiere grundsätzlich immer onEnterFrame-Funtionen zu löschen sobald sie ihren Zweck erfüllt haben, um die Performance zu erhöhen bzw. nicht zu senken. Obwohl bei diesem Beispiel hier diese Anpassungsfunktion nicht aufwendig und "zeilenintensiv" ist, frage ich mich immer, ob man dieses onEnterFrame nicht umgehen kann. Funktionieren denn klasseninterne Events auch mit einer onEnterFrame-Kontrolle?

Gruss
 
Hi,

interne Ereignisse werden wahrscheinlich größtenteils in einer Kette weitergereicht und sicher schneller verarbeitet als eine interpretierte onEnterFrame-Methode.

Mein erster Gedanke war das Überwachen mit watch(), aber das funktioniert nicht bei Eigenschaften von Objekten (z.B. die height-Eigenschaft des Containers). Du könntest natürlich von dem zu scrollenden Objekt eine Nachricht an den Scroller schicken, aber auch dann müsstest Du das Skalieren irgendwie überwachen (es sei denn das passiert nur bei bestimmten bekannten Ereignissen)... besonders modular wäre das allerdings nicht.

Erfahrungsgemäß frisst eine (fast) "leere" onEnterFrame nicht viel Performance und Du solltest dort nur etwas tun, wenn sich die Größe des Containers tatsächlich geändert hat. Wie performanceintensiv so etwas ist, kannst Du ja mit einer hohen Framerate, einem Framecounter und mehreren zuschaltbaren onEnterFrame-Methoden testen. ;)

Gruß
.
 

Neue Beiträge

Zurück