2009-03-29 14 views
0

Wenn ich ein TextField- in AS3 mit mehrzeiligen auf true gesetzt erstellen und setzen Sie den Text sagen:Action indexOf Problem

„Hola \ r hola“

Ich bin nicht in der Lage die Indexposition \ r abrufen mit indexOf Funktion gibt es immer -1

Weiß jemand, was ich falsch mache?

var txt:TextField; 
txt.multiline = true; 

txt.text = "Hola \r hola"; 

//txt now renders fine with the line break 

trace(txt.indexOf("\r")); //Returns -1, should return the valid index of \r in txt 

Antwort

2

Antwort Mikkos Nach gab ich ihm einen Versuch:

var textField:TextField = addChild(new TextField()) as TextField; 
textField.multiline = true; 

textField.text = "test \r test"; 

trace("result>" + textField.text.indexOf("\r")); 

Dieser Code verfolgt:

result>5 

... Genau wie erwartet.

Wenn es immer noch nicht für Sie funktioniert, suchen Sie zuerst nach einem anderen Zeichen als \ r, wenn dies funktioniert, versuchen Sie auch nach \ n zu suchen. Vielleicht wird der Zeilenvorschub irgendwie transformiert. (Die OS sind Sie?)

+0

Danke, dass Sie meine schnelle Antwort besser geschrieben haben, ich habe das Initiationsproblem nicht erkannt. :) –

+0

Danke, es ist einer jener Tage, an denen du einen dummen Fehler machst und nichts scheint zu funktionieren. Schlechtes ich. Funktioniert jetzt. –

1

Sieht mir, dass Sie versuchen, den Index des TextField- anstatt die TextField.text zu erhalten, die Sie interessieren.

trace(txt.text.indexOf("\r")); 

könnte etwas besser funktionieren.

+0

Vielen Dank für die Rückkehr, ich habe es auch versucht, aber es funktioniert immer noch nicht ... –

+0

Brian, does'nt txt.text gibt eine Zeichenfolge zurück? Sicher, ich hätte meinen Text etwas klarer schreiben können, aber meine Tracezeile ist korrekt. –

+0

Es tut es aber Sie verwenden toString(). Sie erhalten das Auto-Vervollständigungs-Popup, was sehr nützlich für Anfänger ist, er hätte dies mit Hilfe des Vervollständigungsfensters meiner Meinung nach längst herausgefunden. –

1

Ok, so das Wichtigste zuerst,

Sie haben Ihr Textfeld instanziiert, Sie lediglich einen Verweis gemacht.

Zweitens, indexOf, ist nicht verfügbar für die TextField-Klasse, sondern für die String-Klasse, also verwenden Sie Folgendes und Sie werden keine Probleme mehr haben. Es geht mir gut.

Theo hat es im Wesentlichen richtig, aber ich dachte, ich würde versuchen, es ein wenig klarer zu machen.

Ich hoffe, dass ich helfen konnte. Ich würde auch vorschlagen, reguläre Ausdrücke zu überprüfen, die einfache Möglichkeiten haben, Leerzeichen oder andere Muster zu finden, die Ihnen einfallen.

+0

Brian, indexOf ist für die TextField-Klasse nicht verfügbar, aber txt.text gibt einen String zurück, sodass Sie ihn nicht erneut in String konvertieren müssen. Überprüfen Sie hier: http://help.adobe.com/en_US/AS3LCR/Flash_10.0/flash/text/TextField.html#text –

+0

Ich weiß, dass es eine Zeichenfolge ist, aber indem Sie toString() sagen, sobald Sie den Punkt eingeben Sie erhalten die Auto-Vervollständigung Box Popup um zu zeigen, welche Eigenschaften und Methoden verfügbar sind :) Dachte, es würde Tjames helfen. –