Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 01-06-2005, 14:20   #1 (permalink)
Neuer User
 
Registriert seit: Mar 2005
Beiträge: 8
TextFormat erweitern und auslesen

Hallo zusammen,

ich will die TextFormat-Klasse mit eigenen Eigenschaften erweitern, um diese Eigenschaften dann in allen TextFormat-Instanzen verfügbar zu haben, die ich in meinem dynamischen TextField verwende. Das Erweitern und Setzen der Eigenschaften funktioniert auch wie ich mir das vorstelle, nur beim erneuten Auslesen der gesetzten Eigenschaften mit myTextField.getTextFormat(fromIndex, toIndex) stimmen die Werte nicht mehr.
Hier ist ein vereinfachtes Code-Beispiel:
ActionScript:
  1. // TextFormat mit Eigenschaft myBool erweitern
  2. TextFormat.prototype.myBool = false;
  3.  
  4. // TextField mit Inhalt fuellen
  5. myTextField.text = "some text content in myTextField";
  6.  
  7. // Zeichen 0-5 des Inhalts in myTextField formatieren
  8. var tfm = new TextFormat();
  9. tfm.myBool = true;
  10. tfm.bold = true;
  11. myTextField.setTextFormat(0, 5, tfm);
  12. trace(tfm.bold); // -> true, stimmt
  13. trace(tfm.myBool); // -> true, stimmt
  14.  
  15. // gesetztes TextFormat holen
  16. var tfm2 = myTextField.getTextFormat(0, 5);
  17. trace(tfm2.bold); // -> true, stimmt
  18. trace(tfm2.myBool); // -> false, stimmt nicht, wurde oben auf true gesetzt
  19.  
Die Eigenschaft myBool im TextFormat tfm2 stimmt nicht, obwohl weiter oben die abgefragte Eigenschaft für den Bereich in dem textField gesetzt wurde.
Wieso gibt getTextFormat(fromIndex, toIndex) nicht zurück, was gesetzt wurde? Oder ist was ich vorhabe gar nicht möglich?

Danke schonmal im voraus,
-sl2k
sl2k ist offline   Mit Zitat antworten
Alt 01-06-2005, 15:18   #2 (permalink)
flashworker
 
Benutzerbild von brose
 
Registriert seit: Jun 2003
Beiträge: 199
Er macht doch alles was du sagst.
Du setzt doch: TextFormat.prototype.myBool = false;
Und die getTextFormat Funktion gibt nur die Werte zurück, die sie auch kennt und myBool kennt sie nun mal nicht. Da mußt du schon die Textformat Klasse erweitern, zumindest die Methode getTextFormat.
__________________
brose
brose ist offline   Mit Zitat antworten
Alt 01-06-2005, 15:35   #3 (permalink)
Neuer User
 
Registriert seit: Mar 2005
Beiträge: 8
Zitat:
Da mußt du schon die Textformat Klasse erweitern, zumindest die Methode getTextFormat.
brose, was meinst du mit erweitern?
Wie läßt sich die Methode getTextFormat der Klasse TextField für meine Zwecke erweitern?

-sl2k
sl2k ist offline   Mit Zitat antworten
Alt 01-06-2005, 17:08   #4 (permalink)
flashworker
 
Benutzerbild von brose
 
Registriert seit: Jun 2003
Beiträge: 199
Kenn mich mit prototype nicht so aus, ich würde das eher über Klassen regeln.
Aber vom Prinzip her müßte das so gehen:
ActionScript:
  1. //TextField um Methode myGetTextFormat erweitern
  2. TextField.prototype.myGetTextFormat = function(a, b) {
  3.     textForm = this.getTextFormat(a, b);
  4. //hier die zusätzlichen Sachen einfügen
  5.     trace("hallo");
  6.     return textForm;
  7. }
Und jetzt die neue methode aufrufen
ActionScript:
  1. var tfm2 = myTextField.myGetTextFormat(0, 5);
Bin mir aber jetzt nicht sicher ob man das mit der TextField und TextFormat Klasse so machen kann. Da bin ich im Moment überfragt. Vielleicht kann ja jemand anders Helfen?!
__________________
brose
brose ist offline   Mit Zitat antworten
Alt 02-06-2005, 09:02   #5 (permalink)
Neuer User
 
Registriert seit: Mar 2005
Beiträge: 8
brose, danke erstmal für Deine Hilfe!
Prinzipiell ist mir das ja alles klar soweit, aber wie kann ich auf meine eigenen Eigenschaften des TextFormats zugreifen, wenn ich TextField um die Methode myGetTextFormat erweitere?
ActionScript:
  1. //TextField um Methode myGetTextFormat erweitern
  2. TextField.prototype.myGetTextFormat = function(a, b) {
  3.         textForm = this.getTextFormat(a, b);
  4.         // hier müßte ich jetzt auf myBool zugreifen und textForm hinzufügen, aber wie?
  5.         return textForm;
  6. }

Zitat:
Kenn mich mit prototype nicht so aus, ich würde das eher über Klassen regeln.
Hab ich auch schon versucht, funktioniert aber auch nicht wie ich mir das vorstelle.
Hier ist die Klasse, mit der ich TextFormat erweitere:
ActionScript:
  1. class TextFormatEx extends TextFormat {
  2.      var myBool:Boolean = false;
  3. }

Und so setze und hole ich die Eigenschaften:
ActionScript:
  1. var tfm = new TextFormatEx();
  2. tfm.myBool = true;
  3. tfm.bold = true;
  4. myTextField.setTextFormat(0, 5, tfm);
  5. trace(tfm.bold); // -> true, stimmt
  6. trace(tfm.myBool); // -> true, stimmt
  7.  
  8. // gesetztes TextFormatEx holen
  9. var tfm2:TextFormatEx = TextFormatEx(myTextField.getTextFormat(0, 5));
  10. trace(tfm2.bold); // -> undefined
  11. trace(tfm2.myBool); // -> undefined
  12.  

Was mache ich falsch? Wie würdest Du das machen?

-sl2k
sl2k ist offline   Mit Zitat antworten
Alt 02-06-2005, 11:07   #6 (permalink)
flashworker
 
Benutzerbild von brose
 
Registriert seit: Jun 2003
Beiträge: 199
Ja genau, bis dahin bin ich auch gekommen. Das Problem besteht jetzt darin die neue Eigenschaft auszulesen. Hab da gestern auch schon rumprobiert, bin aber zu keinem Ergebnis gekommen und dann war ich mit meinem Latein am Ende.
Das Problem besteht ja darin, das es zwei Klassen sind. Einmal die TextFiel und dann die TextFormat. Wenn man jetzt TextFormat erweitert kennt die TextField Klasse ja noch lange nicht die erweiterte Klasse. Und TextField.getTextFormat() gibt dir immernoch ein Objekt der Klasse TextFormat zurück. Man müßte also wahrscheinlich auch die TextField Klasse erweitern. Aber die speichert meiner Meinung nach halt nur die zugehörigen Textformate als TextFormat-Objekte. Und hier ist der Punkt wo ich keinen Lösungsansatz mehr habe. Bin fast der Meinung, das das überhaupt nicht geht. Kann mich da aber auch durch meine geringen Erfahrungen irren.
__________________
brose
brose ist offline   Mit Zitat antworten
Alt 02-06-2005, 12:59   #7 (permalink)
Neuer User
 
Registriert seit: Mar 2005
Beiträge: 8
Zitat:
Zitat von brose
Bin fast der Meinung, das das überhaupt nicht geht.
Das glaube ich mittlerweile auch und mach das jetzt so, dass ich meine eigenen Eigenschaften als comma-delimited String im target des TextFormats speichere, da ich das sonst nicht verwende.
Also so:
ActionScript:
  1. var myData:Array = ["myCustomValue1", "myCustomValue2", "myCustomValue3"];
  2. var myFormat:TextFormat = new TextFormat();
  3. myFormat.target = myData.join(",");
Ganz und gar nicht so sauber wie ich mir das ursprünglich vorgestellt habe, aber funktioniert.

Gruss, sl2k
sl2k 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 10:30 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele