Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 13-06-2005, 10:48   #1 (permalink)
FBx
 
Benutzerbild von xlive
 
Registriert seit: May 2003
Beiträge: 968
zeilenumbruch in abhängigkeit der wortlänge

hi,

lese ein text aus einer .txt in ein dyn. textfeld ein. nach einem leerzeichen, wird der text automatisch umgebrochen. jetzt soll die zeile aber nicht nach jedem leerzeichen umgebrochen, sonder in abhängigkeit von der wortlänge.
bsp:
"Der Farbtest" -> soll in einer zeile stehen.
"Touchscreen Testeinstellungen" -> soll auf zwei zeilen verteilt werden.

ActionScript:
  1. for (var i = 1; i<=4; i++) {
  2.     _level0.Page2["labeltxt"+i].text = _level0.dataObj["labeltxt"+i].split(" ").join("\\n");;
  3. }

gruss xlive

Geändert von xlive (13-06-2005 um 10:53 Uhr)
xlive ist offline   Mit Zitat antworten
Alt 13-06-2005, 14:39   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
ActionScript:
  1. var vTxt = "fndfghhn gddhg mmdghdg djmdmg mfhjmdghngdh fhjmdjmj";
  2. //
  3. var trenne_ab = vTxt.indexOf(' ', 20);
  4. vTxt=vTxt.substr(0,trenne_ab)+'\r'+vTxt.substr(trenne_ab+1);
  5. trace(vTxt);
der freiraum beim letzten trenne_ab stammt nicht von mir. den macht das forum kratis dazu ;-)
den rest, "ab welchem wort oder auch nicht" getrennt werden soll, musst du dir selbst zusammenbasteln.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (13-06-2005 um 14:57 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 13-06-2005, 17:31   #3 (permalink)
FBx
 
Benutzerbild von xlive
 
Registriert seit: May 2003
Beiträge: 968
danke.
sieht mal gut aus. werd´s mir heute abend mal zusammen basteln.

gruss xlive
xlive ist offline   Mit Zitat antworten
Alt 13-06-2005, 17:35   #4 (permalink)
poke
 
Registriert seit: Dec 2002
Ort: Iserlohn [NRW]
Beiträge: 2.304
würde da nicht
textfeld.multiline = true;
textfeld.wordWrap = true;
reichen?
pokepika ist offline   Mit Zitat antworten
Alt 20-06-2005, 18:46   #5 (permalink)
FBx
 
Benutzerbild von xlive
 
Registriert seit: May 2003
Beiträge: 968
mit folgendem script funktioniert es:
ActionScript:
  1. for (var i = 1; i<=4; i++) {
  2.     _level0.Page2["f14labelbtn"+i].autoSize = "right";
  3.     _level0.labelwert = _level0.dataObj["f14labelbtn"+i];
  4.     var labelzahl = _level0.labelwert.indexOf(" ");
  5.     if (labelzahl>=10) {
  6.         _level0.Page2["f14labelbtn"+i].text = _level0.dataObj["f14labelbtn"+i].split(" ").join("\\n");
  7.         _level0.zeile2 = _level0.Page2["f14labelbtn"+i].text;
  8.     } else {
  9.         _level0.Page2["f14labelbtn"+i].text = _level0.dataObj["f14labelbtn"+i];
  10.     }
  11. }
jetzt habe ich noch das problem mit der dritten zeile:
so soll wenn das zweite wort z.b. mehr als 10 zeichen hat in die dritte zeile umgebrochen werden.
1. Zeile: Touchscreen
2. Zeile: Farbschema
3. Zeile: Setting

wenn nicht, nur in 2 zeilen:
1. Zeile: Touchscreen
2. Zeile: Farb Setting

wie kann ich das zweite "_" abfragen?

gruss xlive
xlive ist offline   Mit Zitat antworten
Alt 20-06-2005, 23:13   #6 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
"..mehr als 10 zeichen.."
10 mal i oder 10 mal W ? mit buchstaben zählen alleine geht sowas nicht.

also wenn du unbedingt einen eigenen zeilenumbruchalgorithmus entwickeln willst. dann machs halt komplett und richtig:

- eine tabelle, für die breite jedes zeichen's (unterschneiden ausschalten, sonst wird's noch etwas komplexer.)
- text in worte trennen. trenner sind alle leer- und satzzeichen.
- buchstabe für buchstabe die breite addieren und nach deinen eigenen regeln entscheiden, ob das noch in die zeile soll oder nicht.
- und wenn du schon dabei bist, dann pack auch gleich noch eine silbentrennung mit dazu.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 21-06-2005, 15:39   #7 (permalink)
FBx
 
Benutzerbild von xlive
 
Registriert seit: May 2003
Beiträge: 968
habe mal folgendes script zusammengebastelt. funktioniert aber nicht ganz sauber. wenn z.b. der string"Format Benutzer Bereich" eingelesen wird, steht zwar "Format Benutzer " in der 1.zeile wird aber nicht ganz rechtsbündig ausgerichtet, es wird noch ein leerzeichen nach dem "r" mit übergeben. mache ich aus Format --> Formateees Benutzer Bereich. dann geht es logischerweise wegen der if-abfrage.
jetzt soll aber erst ab einer wortlänge von 10zeichen umgebrochen werden, d.h. ich kann keine modulo<10 nehmen.
ActionScript:
  1. //-----------------------
  2. for (var i = 1; i<=3; i++) {
  3.     _level0.Page2["f14labelbtn"+i].autoSize = "right";
  4.     arr = [];
  5.     arr = _level0.dataObj["f14labelbtn"+i].split(" ");
  6.     for (var j = 0; j<arr.length; j++) {
  7.         if (arr[j].length%20 == 0) {
  8.             arr[j] += "\n";
  9.         }
  10.         if (arr[j].length%19 == 0) {
  11.             arr[j] += "\n";
  12.         }
  13.         if (arr[j].length%18 == 0) {
  14.             arr[j] += "\n";
  15.         }
  16.         if (arr[j].length%17 == 0) {
  17.             arr[j] += "\n";
  18.         }
  19.         if (arr[j].length%16 == 0) {
  20.             arr[j] += "\n";
  21.         }
  22.         if (arr[j].length%15 == 0) {
  23.             arr[j] += "\n";
  24.         }
  25.         if (arr[j].length%14 == 0) {
  26.             arr[j] += "\n";
  27.         }
  28.         if (arr[j].length%13 == 0) {
  29.             arr[j] += "\n";
  30.         }
  31.         if (arr[j].length%12 == 0) {
  32.             arr[j] += "\n";
  33.         }
  34.         if (arr[j].length%11 == 0) {
  35.             arr[j] += "\n";
  36.         }
  37.         if (arr[j].length%10 == 0) {
  38.             arr[j] += "\n";
  39.         }
  40.         _level0.Page2["f14labelbtn"+i].text += arr[j]+" ";
  41.     }
  42.     if (_level0.Page2["f14labelbtn"+i]._height>=50 && _level0.Page2["f14labelbtn"+i]._height<100) {
  43.         _level0.Page2["f14labelbtn"+i]._y -= 10;
  44.     }
  45.     if (_level0.Page2["f14labelbtn"+i]._height>101 && _level0.Page2["f14labelbtn"+i]._height<120) {
  46.         _level0.Page2["f14labelbtn"+i]._y -= 20;
  47.     }
  48. }
abgesehen davon, dass das script ziemlich bullshit-mäßig aussieht, wer hat einen guten vorschlag?!

gruss xlive
xlive ist offline   Mit Zitat antworten
Alt 21-06-2005, 15:56   #8 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
den script tu ich mir jetzt nicht an ;-)
kannst du nicht mal ein fla mit beispieltext hochladen?

text einmal so wie er ist und so wie du es haben willst?
weil:

(var i = 1; i<=3; i++) mal 4 mal 3 ??

_height<120 was hat dann jetzt die höhe damit zu tun?
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (21-06-2005 um 15:58 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 21-06-2005, 16:37   #9 (permalink)
FBx
 
Benutzerbild von xlive
 
Registriert seit: May 2003
Beiträge: 968
das ganze soll für 8 sprachen funktionieren. der text wird jeweils aus einer .txt einglesen (z.b. data_en, data_de, data_it, data_pl, usw.)
die textfelder sind die labels für listboxen, buttons etc.
jetzt sind je nach sprache, die worte länger oder kürzer, oder aus einem wort werden zwei, z.b. wird aus color setting -> die Farbeinstellung usw.
damit das label also immer zentriert zur listbox steht, wird es, wenn zwei oder drei zeilen, in der höhe verschoben.

ich poste mal später eine bsp.fla.

gruss xlive
xlive ist offline   Mit Zitat antworten
Alt 21-06-2005, 18:09   #10 (permalink)
FBx
 
Benutzerbild von xlive
 
Registriert seit: May 2003
Beiträge: 968
also, habe für´s bessere verständnis einen kleinen testdummy gebastelt.
einfach mal mit der anzahl der wörter und den wortlängen herumspielen.
www.flashbanditen.de/dummy.zip

gruss xlive
xlive ist offline   Mit Zitat antworten
Alt 21-06-2005, 19:22   #11 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
gut, jetzt sehe ich doch etwas klarer. jetzt gibts aber eins drauf ;-)

a) warum zum kuckuck schreibst du das blödes \p nicht einfach in den text rein?
&f22labelbtn3=Touchscreen\pKalibrieren
bzw. wenn du es nicht escapen willst
&f22labelbtn3=Touchscreen#Kalibrieren
und dann # durch \p tauschen.

b) hatte bisher die auffassung, du redest von texten. sind doch aber jeweils nur diese begriffe. und wie dir pokepika schon vor urzeiten geschrieben hat:
textfeld.multiline = true;
textfeld.wordWrap = true;
ist der text für das textfeld zu breit, dann gehts automatisch in die nächste zeile.

c) aber weil man 'irren' nie wiedersprechen soll ;-)
ActionScript:
  1. var vText = "Oberste Mittelklasse Pkw";
  2. //
  3. var vMaxChars = 15;
  4. var vWort = vText.split(" ");
  5. var vLine = vText="";
  6. for (i=0; i<vWort.length; i++) {
  7.     if (vLine.length+1+vWort[i].length>vMaxChars) {
  8.         vText += ((vLine) ? "\\p" : "")+vLine;
  9.         vLine = "";
  10.     }
  11.     vLine += ((vLine) ? " " : "")+vWort[i];
  12. }
  13. if (vLine) {
  14.     vText += ((vLine) ? "\\p" : "")+vLine;
  15. }
  16. trace(vText);
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (21-06-2005 um 19:24 Uhr)
hgseib 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 15:29 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele