Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 06-09-2004, 12:51   #1 (permalink)
Ähm Äzubi
 
Registriert seit: Oct 2002
Ort: Kölle
Beiträge: 33
dynamisch ein TextFormat ändern

Hi,

ich habe ein Textfeld + Format in AS zugewiesen.
nun Lade ich in gewissen intervallen Texte + Autor
nach, welche ich per Stringkonkatenation an den
schon vorhandenen Text anfüge. Nach jedem neuen
Beitrag möchte ich gerne den Autor farblich hervorheben.

z.B

Nobody: Dies ist ein Satz?
GAST: Und was für einer.

das ganze versuche ich mit
-> setTextFormat(beginIndex, endIndex, this._format);

Leider scheint es das dies nur bei statischen Texten korrekt funktioniert.
Wenn ich während der Laufzeit strings erweiter bekomme ich ziemlich
seltsamme Ergebnisse.


hier die Methode:

Code:
Textfeld.prototype.setAutorColor = function(colour, autor, message)
{
    var count = autor.length;
    var beginIndex = this._textfeld.length;
    var endIndex = beginIndex + count;
	
    this._format.color = colour; 
    this._format.bold = true;
	
    this._textfeld.text += autor;
    this._textfeld.text += message;
	
    this._textfeld.setTextFormat(beginIndex, endIndex, this._format);
}
__________________
Gruß Andreas
andreasgoetzen ist offline   Mit Zitat antworten
Alt 06-09-2004, 13:34   #2 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
das kannste doch prima mit html text lösen...
schau einfach mal nach htmltext

PHP-Code:
text2.html true;
text2.htmlText "<b> Text in Fettschrift </b>"
das bsp. ändert natürlich nicht die farbe.... ist logischerweise aber auch möglich...

cya, sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 06-09-2004, 13:36   #3 (permalink)
Definitionssache
 
Benutzerbild von dburucu
 
Registriert seit: Apr 2003
Ort: Braunschweig
Beiträge: 2.433
Schau mal dieses Beispiel an:

http://www.actionscripts.org/tutoria...e/index2.shtml
dburucu ist offline   Mit Zitat antworten
Alt 06-09-2004, 14:18   #4 (permalink)
will code HTML for food
 
Benutzerbild von querkopf
 
Registriert seit: Mar 2003
Beiträge: 1.232
Schau Dir zu dem Vorschlag von Salazar doch mal mein Beispiel mit "bbcode to html" (link zu finden in meiner Signatur) an.
Dann kannst Du zB eigene bb-Tags definieren und darüber dann Deinen Text formatieren...
__________________
Alles ist wie immer. Nur schlimmer.
querkopf ist offline   Mit Zitat antworten
Alt 06-09-2004, 15:41   #5 (permalink)
Ähm Äzubi
 
Registriert seit: Oct 2002
Ort: Kölle
Beiträge: 33
@salazar

Mit htmlText ginge es natürlich, aber das sehe ich nicht als die geschickteste
Lösung an, da ich HTML Tags unterdrücken möchte.

sonst kommen nachher noch so lustige beiträge wie
<a href='../lougout.php' target='_self'>klick mal</a>

@querkopf

Wenn man sich für htmlText entscheidet scheint das die naheliegenste Lösung
zu sein. Leider möchte ich es aber vermeiden die Beiträge 'parsen' zu müssen
da die Intervalle zu hoch sind und textnachrichten ja auch noch ziemlich lang
sein können.

@dburucu

Sorry... aber irgendwie sieht das für mich aus als würde das Ding auch nichts
anderes machen als, zur Laufzeit schon vorhandene Textformate zu ändern.
Zumindest wenn ich das richtig verstanden habe?


@all

gibt es überhaupt die Möglichkeit das so zu biegen wie ich das oben
beschrieben
habe?
__________________
Gruß Andreas
andreasgoetzen ist offline   Mit Zitat antworten
Alt 06-09-2004, 15:54   #6 (permalink)
Definitionssache
 
Benutzerbild von dburucu
 
Registriert seit: Apr 2003
Ort: Braunschweig
Beiträge: 2.433
ehm ich meinte es eigentlich so:

ActionScript:
  1. Textfeld.prototype.setAutorColor = function(colour, autor, message)
  2. {
  3.     var count = autor.length;
  4.     var beginIndex = this._textfeld.length;
  5.     var endIndex = beginIndex + count;
  6.  
  7.     myTextFormat = new TextFormat();
  8.     myTextFormat.color = colour;
  9.     myTextFormat.bold = true;
  10.  
  11.     this._textfeld.text += autor;
  12.     this._textfeld.text += message;
  13.    
  14.     this._textfeld.setTextFormat(beginIndex, endIndex, myTextFormat);
  15. }
dburucu ist offline   Mit Zitat antworten
Alt 06-09-2004, 16:13   #7 (permalink)
Ähm Äzubi
 
Registriert seit: Oct 2002
Ort: Kölle
Beiträge: 33
So,

hab ich direkt getestet und bekomme genau das gleiche Ergebniss wie vorher

Nobody: Erster Beitrag der mit setAutorColor geändert wird
Gast: zweiter eintrag der mit setAutoColor geändert wird

das ist das gewünschte Ergebniss:
mein Ergebniss ist folgendes

Nobody: Erster Beitrag der mit setAutorColor geändert wird
Gast: zweiter eintrag der mit setAutoColor geändert wird

der aktuelleste Beitrag wird richtig angezeigt und alle vorherigen verlieren
Ihre Formatierung.
__________________
Gruß Andreas
andreasgoetzen ist offline   Mit Zitat antworten
Alt 06-09-2004, 16:35   #8 (permalink)
Definitionssache
 
Benutzerbild von dburucu
 
Registriert seit: Apr 2003
Ort: Braunschweig
Beiträge: 2.433
Hmmm

ja der setTextFormat macht alles rückgängig... setzt alles neu...

hmm ich hab zwar ne Idee, weiss aber nicht wie das so geht:

Man kann den TExt durchgehen und die per getTextFormat das vorherige Format abfragen. Dazu müsste man dann das neue hinzufügen. Dann an den Text zuweisen...
dburucu ist offline   Mit Zitat antworten
Alt 07-09-2004, 07:37   #9 (permalink)
Ähm Äzubi
 
Registriert seit: Oct 2002
Ort: Kölle
Beiträge: 33
Die Idee hatte ich auch schon, habe ich aber wieder verworfen
Da mir der Aufwand etwas groß erscheint alle Positionen in ein
array zu puschen und dann in einer schleife den ganzen klumpatsch
wieder zuzuweisen. Je nachdem wie lang so ein Text wird könnte das
ein wenig performance lastig werden.

Sonst keine Ideen mehr wieso dat niet funzt?
__________________
Gruß Andreas
andreasgoetzen ist offline   Mit Zitat antworten
Alt 07-09-2004, 07:48   #10 (permalink)
Definitionssache
 
Benutzerbild von dburucu
 
Registriert seit: Apr 2003
Ort: Braunschweig
Beiträge: 2.433
wie wärs mit @salazar's Idee.

Du könntest ja die HTML Tags rausfischen und dann hast Du ein reines Text. Dann kannst Du dein <b> einsetzen.

Geändert von dburucu (07-09-2004 um 07:53 Uhr)
dburucu ist offline   Mit Zitat antworten
Alt 07-09-2004, 08:57   #11 (permalink)
will code HTML for food
 
Benutzerbild von querkopf
 
Registriert seit: Mar 2003
Beiträge: 1.232
Du hast doch eine Eingabe.
Diese Eingabe muß ja nicht 1:1 in Dein Textfeld übernommen werden!
Du filterst vorher einfach alle Tags raus, bzw lässt sie garnicht erst zu, indem Du zB in Deinem Eingabefeld mit "restrict" Zeichen verbietest:
Code:
meinText.restrict = "^><";
oder Du kannst mit der Funktion die ich verwende um bbcode zu html um zu formen Die "verbotenen" Zeichen escapen. Sprich "umwandeln"
Code:
" -> &quot;
& -> &amp;
< -> &lt;
> -> &gt;
dann können die noch soviel tags eingeben wie sie wollen... es bringt nichts - bzw anders: sie werden dargestellt.
zusätzlich können Deine User über bbcode ihre Beiträge formatieren!
__________________
Alles ist wie immer. Nur schlimmer.
querkopf ist offline   Mit Zitat antworten
Alt 07-09-2004, 09:17   #12 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
Zitat:
Zitat von andreasgoetzen
@salazar
Mit htmlText ginge es natürlich, aber das sehe ich nicht als die geschickteste
Lösung an, da ich HTML Tags unterdrücken möchte.

sonst kommen nachher noch so lustige beiträge wie
<a href='../lougout.php' target='_self'>klick mal</a>
hm... wenn du meinst. nun gut. aber scheine ja nicht der einziege zu sein der diese lösung für die geschicktere hält

cya, sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar 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 08:03 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele