Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 18-04-2004, 15:32   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Beiträge: 9
Question Typewriter mit selbsterkennendem Zeilenumbruch

Moinsen.

Ich hab ein Problem mit einem typewriter-effekt und dem Zeilenumbruch.

Kennt jemand einen Weg mit dem das Script den Zeilenumbruch von selber entdeckt? Bedeutet, dass wenn der Typewriter ausgeführt wird und dann das letzte Wort in der Zeile beim Schreiben in die nächste Zeile springt. Genau dieses Problem hatte ich bisher bei den Scripts die ich hier im Forum gefunden habe. Leider komm ich da irgendwie nicht auf eine Lösung.

achso und selber will ich die umbrüche nicht angeben. Bei relativ viel text ist das ja auch nich so doll.

Wär echt cool wenn mir da jemand helfen könnte.

KNDX
KNDX ist offline   Mit Zitat antworten
Alt 18-04-2004, 15:46   #2 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Ort: Stuttgart
Beiträge: 155
wollen ja helfen

Wenn Du dich auf Scripts beziehst, dann wäre es einfacher, wenn gleich den Pfad dort hin nennst. Dann kann man Dir auch schneller helfen (nach dem Motto ->"Ändere die oder die Zeile") und muss nicht alles nochmal neu programmieren....
nanodesigner ist offline   Mit Zitat antworten
Alt 18-04-2004, 16:21   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Beiträge: 9
Oh sorry. Das hatte ich total vergessen. hier der link

TextField.prototype.typeWriter

Es ist das zweite Script. (im ersten war ein kleiner fehler)

KNDX
KNDX ist offline   Mit Zitat antworten
Alt 18-04-2004, 16:43   #4 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Ort: Stuttgart
Beiträge: 155
Habe ich das richtig verstanden?

Mach es doch so:
mystring = "kleiner\rtypewriter,\rviel\rspass\rdamit";

Falls ich Dich richtig verstanden habe.
nanodesigner ist offline   Mit Zitat antworten
Alt 18-04-2004, 16:55   #5 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Beiträge: 9
Ne leider nich. Damit müsste ich den zeilenumbruch ja im Text einbinden. und das möchte ich nicht. Es soll direkt erkannt werden ob das wort noch in die Zeile passt oder in die nächste zeile muss. hab mal das Script angehangen. In der SWF sieht man das besser.
Angehängte Dateien
Dateityp: zip typewriter.zip (4,7 KB, 28x aufgerufen)
KNDX ist offline   Mit Zitat antworten
Alt 18-04-2004, 18:18   #6 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Ort: Stuttgart
Beiträge: 155
Problematisch

Hmmm. Das ist problematisch.

Es gibt dafür verschiedene Ansätze, die alle ein wenig komplex sind.

1. Für die verwendete Schriftart/Größe ein Array mit allen Zeichenbreiten erstellen und vorher berechnen, wie lang das Ganze wird. -> Ja, das wurde schon tatsächlich durchgeführt.

2. Den Text Wort für Wort in einem nicht sichtbaren Textfeld einfügen und jeweils die Anzahl der Zeilen prüfen, ob nun ein Umbruch erfolgt oder nicht. -> Meine "ad hoc" Variante

Aber vielleicht gibt es ja noch klügere Varianten.

PS: Der Typewriter Effekt ist eigentlich ein netter Effekt, der nicht unbedingt für viel Fließtext eingesetzt werden sollte.

Geändert von nanodesigner (18-04-2004 um 18:19 Uhr)
nanodesigner ist offline   Mit Zitat antworten
Alt 18-04-2004, 20:50   #7 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Beiträge: 9
ok. Danke dir für die schnelle Antwort. Werd mich daran erstmal versuchen.

trotzdem, hat irgendjemand ne einfachere variante oder vielleicht schon mal sowas gebaut?

many thnx

KNDX
KNDX ist offline   Mit Zitat antworten
Alt 03-02-2009, 12:53   #8 (permalink)
Neuer User
 
Registriert seit: Aug 2008
Beiträge: 2
Kommt etwas spät, aber vielleicht hilft es trotzdem jemandem – ich habe das selbe Problem für mich in AS2 folgendermaßen gelöst:

angenommen die Variable "schreibeText" ist der Text den der "Typewriter" ausgeben soll, in das Textfeld "textfeld" ...
Dann habe ich folgenden Code vorgeschaltet (sollte HTML Text vorliegen, müssen die <br> Tags vorab durch "\n" ersetzt werden via split und join oder man schreibt den Code unten um)

Code:
// Umbrüche vorgeben
textfeld._visible = false;
woerter = schreibeText.split(" "); // In Wörter zerlegen
textfeld.text = woerter[0];
for (var i=1;i<woerter.length; i++)
{
	var alteHoehe = textfeld.textHeight;
	textfeld.text += " " + woerter[i];
	if (textfeld.textHeight > alteHoehe && woerter[i].lastIndexOf("\n") == -1) 
	{
		woerter[i] = "\n" + woerter[i] ;
	}
}
schreibeText = woerter.join(" ");

textfeld._visible = true; // erst im nächsten Frame bzw. Druchlauf
Der Code ermittelt durch die Veränderung der "textHeight" den Umbruch und erzwingt via "\n" einen Umbruch vor dieser Stelle ...
Am besten das ganze in eine Funktion packen.

Grüße
Rob

Geändert von robcs (03-02-2009 um 13:11 Uhr)
robcs ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 07:41 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele