Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 18-08-2003, 21:43   #1 (permalink)
stop the fog
 
Benutzerbild von < priZma >
 
Registriert seit: Apr 2003
Beiträge: 97
text split

Hi
Ich steh mal wieder völligst auf dem Schlauch.
Ich versuche einen Satz aufzuspliten. So das jeder einzelne Buchstabe in ein MC liegt.
So weit bin ich gekommen nur wie geht es weiter? Oder ist das überhaupt der richtige Weg?
ActionScript:
  1. effektText_arr = new Array ();
  2. leereMovieClips_arr = new Array ();
  3. texte_arr = new Array ();
  4.  
  5. // Der Text
  6. var effekt_txt = "Das ist ein Testsatz";
  7. // Teilt jeden einzelnen Buchstaben und legt sie in ein Array.
  8. effektText_arr = effekt_txt.split ("");
  9. // Konvertiert jeden Buchstaben in einen Movieclip
  10. for (var i = 0; i < effektText_arr.length; i++) {
  11.     //erstellt für jeden Buchstaben einen neuen MC
  12.     leereMovieClips_arr[i] = _root.createEmptyMovieClip ("texte" + i + "_mc", i);
  13.     // Erstellt pro MC ein leeres Textfeld
  14.     leereMovieClips_arr[i].createTextField ("neueBuchstaben" + i + "_txt", 1, 0, 0);
  15.     texte_arr[i] = "neueBuchstaben" + i + "_txt";
  16. }
Ich hoffe ihr könnt damit was anfangen
.priZma
< priZma > ist offline   Mit Zitat antworten
Alt 18-08-2003, 22:00   #2 (permalink)
dummschnack
 
Benutzerbild von Chino
 
Registriert seit: Mar 2002
Ort: Essen
Beiträge: 1.778
Hi!

Schon mal auf die schnelle ein häppchen. So bekommst du schon mal ein schickes Array:

ActionScript:
  1. String.prototype.str2arr = function () {
  2.     var sl = this.length;
  3.     var arr = new Array ();
  4.     for (var i = 0; i < sl; i++) {
  5.         arr.push (this.charAt (i));
  6.     }
  7.     return arr;
  8. };
  9. str = "Das ist mein Teststring";
  10. str_arr = str.str2arr ();

Den Rest schau ich mir gleich auch noch an...

Gruss, Chino
Chino ist offline   Mit Zitat antworten
Alt 18-08-2003, 22:13   #3 (permalink)
dummschnack
 
Benutzerbild von Chino
 
Registriert seit: Mar 2002
Ort: Essen
Beiträge: 1.778
Holà.

So, jetzt legt er auch die Textfelder an. Was genau hast du denn da vor? Und warum schreibst du die Refernzen in ein Array?

Gruss, Chino

ActionScript:
  1. String.prototype.str2arr = function () {
  2.     var sl = this.length;
  3.     var arr = new Array ();
  4.     for (var i = 0; i < sl; i++) {
  5.         arr.push (this.charAt (i));
  6.     }
  7.     return arr;
  8. };
  9. leereMovieClips_arr = new Array ();
  10. texte_arr = new Array ();
  11. // Der Text
  12. var effekt_txt = "Das ist ein Testsatz";
  13. // Teilt jeden einzelnen Buchstaben und legt sie in ein Array.
  14. effektText_arr = effekt_txt.str2arr ();
  15. // Konvertiert jeden Buchstaben in einen Movieclip
  16. for (var i = 0; i < effektText_arr.length; i++) {
  17.     //erstellt für jeden Buchstaben einen neuen MC
  18.     leereMovieClips_arr[i] = _root.createEmptyMovieClip ("texte" + i + "_mc", i);
  19.     // Erstellt pro MC ein leeres Textfeld
  20.     // ACHTUNG: Hier haben die Parameter für Breite und Höhe gefehlt:
  21.     leereMovieClips_arr[i].createTextField ("neueBuchstaben" + i + "_txt", 1, 0, 0, 20, 20);
  22.     texte_arr[i] = "neueBuchstaben" + i + "_txt";
  23. }

Geändert von Chino (18-08-2003 um 22:14 Uhr)
Chino ist offline   Mit Zitat antworten
Alt 18-08-2003, 22:17   #4 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
hab auch noch einen

ActionScript:
  1. effektText_arr = new Array();
  2. leereMovieClips_arr = new Array();
  3. texte_arr = new Array();
  4. // Der Text
  5. var effekt_txt = "Das ist ein Testsatz";
  6. // Teilt jeden einzelnen Buchstaben und legt sie in ein Array.
  7. effektText_arr = effekt_txt.split("");
  8. Array.prototype.kill = function(opfer) {
  9.     for (var i in this) {
  10.         if (this[i] == opfer) {
  11.             this.splice(i, 1);
  12.         }
  13.     }
  14. };
  15. effektText_arr.kill(" ");
  16. trace(effektText_arr);
  17. // Konvertiert jeden Buchstaben in einen Movieclip
  18. for (var i = 0; i<effektText_arr.length; i++) {
  19.     //erstellt für jeden Buchstaben einen neuen MC
  20.     _root.createEmptyMovieClip("texte"+i+"_mc", i);
  21.     _root["texte"+i+"_mc"]._y = i*20;
  22.     // Erstellt pro MC ein leeres Textfeld
  23.     _root["texte"+i+"_mc"].createTextField("neueBuchstaben", 0, 0, 0, 20, 20);
  24.     _root["texte"+i+"_mc"].neueBuchstaben.text = effektText_arr[i];
  25. }



hi chino...
warrantmaster ist offline   Mit Zitat antworten
Alt 18-08-2003, 22:24   #5 (permalink)
dummschnack
 
Benutzerbild von Chino
 
Registriert seit: Mar 2002
Ort: Essen
Beiträge: 1.778
Hi Warrant!

Auch schön...

So, einmal noch, dann ist gut...
So würde ich das wohl machen:

ActionScript:
  1. String.prototype.str2arr = function () {
  2.     var sl = this.length;
  3.     var arr = new Array ();
  4.     for (var i = 0; i < sl; i++) {
  5.         arr.push (this.charAt (i));
  6.     }
  7.     return arr;
  8. };
  9. var effekt_txt = "Das ist ein Testsatz";
  10. var effektText_arr = effekt_txt.str2arr ();
  11. for (var i = 0; i < effektText_arr.length; i++) {
  12.     var mc, tf;
  13.     mc = _root.createEmptyMovieClip ("texte" + i + "_mc", i);
  14.     mc.createTextField ("neueBuchstaben" + i + "_txt", 1, 0, 0, 20, 20);
  15.     mc["neueBuchstaben" + i + "_txt"].text = effektText_arr[i];
  16. }

Gruss, Chino
Chino ist offline   Mit Zitat antworten
Alt 18-08-2003, 23:55   #6 (permalink)
stop the fog
 
Benutzerbild von < priZma >
 
Registriert seit: Apr 2003
Beiträge: 97
Ja super danke euch beiden.
Mir war die Script Schreibweise nicht ganz bewusst aber so wie ihr das zeigt...OK klar

@ warrantmaster
Der whitespace killer ist der killer

Jetzt aber mal ne Frage.
@ Chino
Warum nutzt du einen String.prototype um den Text zu splitten?
Man kann doch durch derString.split ("") genau das selbe erreichen und ist von der schreibweise auch noch einfacher.

Für was ich das brauche?
Für Texteffekte.
Warum ich die Reverenzen in ein Array speichere?
Damit ich die Texteffekte besser bearbeiten kann

So mal schauen was dabei rauskommt. Wenn es was brauchbares wird werde ich es hier mal posten.

ciao
.priZma
< priZma > ist offline   Mit Zitat antworten
Alt 19-08-2003, 06:17   #7 (permalink)
Herr Brot
 
Benutzerbild von mati
 
Registriert seit: Dec 2002
Beiträge: 1.692
Zitat:
Geschrieben von < priZma >
Warum nutzt du einen String.prototype um den Text zu splitten?
Man kann doch durch derString.split ("") genau das selbe erreichen und ist von der schreibweise auch noch einfacher.
[/B]
ich bin zwar nicht chino, kanns dir aber trotzdem sagen! wenn du das in einen prototype steckst, kannst du es auf jeden string anwenden!
ActionScript:
  1. String.prototype.str2arr = function () {
  2. ...
  3. }
  4. deinstring = "balbalasdkf";
  5. arrchar1 = deinstring.str2arr;
  6. einandererstring = "keine ahnung was da rein soll";
  7. arrchar2 = einandererstring.str2arr;


siehst du den vorteil?


gruß, mati
__________________
„Ich war geheilt, all right!“
mati ist offline   Mit Zitat antworten
Alt 19-08-2003, 07:08   #8 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
nene mati,
die Frage ist, warum chino überhaupt eine funktion dafür schreibt, denn:
ActionScript:
  1. String.prototype.str2arr = function () {
  2.         var sl = this.length;
  3.         var arr = new Array ();
  4.         for (var i = 0; i < sl; i++) {
  5.                 arr.push (this.charAt (i));
  6.         }
  7.         return arr;
  8. };
  9. myArray=myString.str2arr()
ist ja nu nix anderes als:
ActionScript:
  1. myArray=myString.split("");
...und die Frage ist natürlich berechtigt, ok in Flash5 ging string.split("") nicht (und ausserdem war split in F5 sehr langsam) aber in MX geht das ja mindestens genau so gut wie chinos workarounds....
...deswegen denke ich, daß chino das einfach übersehen hat oder in Flash5 scriptet...

Gruß

Alois
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-
Alois ist offline   Mit Zitat antworten
Alt 19-08-2003, 08:17   #9 (permalink)
dummschnack
 
Benutzerbild von Chino
 
Registriert seit: Mar 2002
Ort: Essen
Beiträge: 1.778
Hehe

Um den Spekulationen mal ein Ende zu machen: Ich hab mich seit F5 nicht mehr mit String --> Array auseinandergesetzt, hatte das Script aber noch bei mir rumfliegen. Die Version mit "split" ist mir einfach entgangen.

Wieder was gelernt... Danke!

Gruss, Chino
Chino ist offline   Mit Zitat antworten
Alt 19-08-2003, 15:16   #10 (permalink)
stop the fog
 
Benutzerbild von < priZma >
 
Registriert seit: Apr 2003
Beiträge: 97
Na so was man lernt eben nie aus

Jetzt setze ich noch eins drauf.
Warum kann ich die Textfelder nicht einbetten?
Wenn ich in die Schleife noch:
ActionScript:
  1. with (mc["neueBuchstaben" + i + "_txt"]) {
  2.         embedFonts = true;
  3.     }
dranhänge müsste der Font doch eingebettet sein oder?

Selbst wen ich noch zusätzlich einen Font wähle, den man 100%tig einbetten kann geht es nicht.

servus
.priZma
< priZma > ist offline   Mit Zitat antworten
Alt 19-08-2003, 16:27   #11 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
...nicht ganz...
1.) Du musst den Font natürlich eingebunden haben, d.h. Du musst entweder ein dynamisches Textfeld mit dem eingebundenen Font auf der Bühne haben, oder den Font in der Bibliothek liegen haben und 'Export für Action-Script' aktiviert haben
2.) Du musst dem Textfeld auch ein Textformat zuweisen, dazu musst Du erst mal ein Textformat haben, dazu z.B. auf _root:
ActionScript:
  1. my_textformat=new TextFormat();
  2. my_textformat.font="Arial";
und dieses musst Du dann dem Textfeld zuweisen dazu dann in der Schleife:
ActionScript:
  1. mc["neueBuchstaben" + i + "_txt"].setTextFormat(_root.my_textformat);
...und zwar nachdem der Buchstabe zugewiesen wurde, sonst musst Du setNewTextFormat verwenden
3.)...bin ich mir nicht ganz sicher ob das so mit with geht, sollte eigentlich schon, weil embedFonts ja definiert sein sollte, aber wenn nicht zickt with rum

Gruß

Alois

Edit: vielleicht für Dich auch interessant: http://www.flashforum.de/forum/showt...744#post666744
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-

Geändert von Alois (19-08-2003 um 16:45 Uhr)
Alois ist offline   Mit Zitat antworten
Alt 22-08-2003, 01:08   #12 (permalink)
stop the fog
 
Benutzerbild von < priZma >
 
Registriert seit: Apr 2003
Beiträge: 97
@Alois
Kam erst jetzt dazu deinen Post auszuwerten.
Deine Variante ist natürlich die, die ich angewandt hatte. Die with Schleife sollte in der Regel keine Probleme dastellen.
Funktionieren wird das nur nicht, da der jeweilige Font erst mal seperat in einem Text eingebunden werden muss und dann kann man dyn. erzeugte Texte einbinden sprich embetFonts auf true stellen.

Puh schwere Geburt. Manchmal dauern die einfachsten Sachen so lange, dass man sich an ihnen die Haare ausreisen könnte.

ciao, .priZma

Geändert von < priZma > (22-08-2003 um 01:11 Uhr)
< priZma > ist offline   Mit Zitat antworten
Alt 22-08-2003, 06:41   #13 (permalink)
Herr Brot
 
Benutzerbild von mati
 
Registriert seit: Dec 2002
Beiträge: 1.692
oh ja, sorry! ich hatte mir die ganze sache zu ungenau angeschaut.

mati
__________________
„Ich war geheilt, all right!“
mati ist offline   Mit Zitat antworten
Alt 22-08-2003, 06:59   #14 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
Zitat:
Geschrieben von < priZma >
...
Funktionieren wird das nur nicht, da der jeweilige Font erst mal seperat in einem Text eingebunden werden muss und dann kann man dyn. erzeugte Texte einbinden sprich embetFonts auf true stellen....
ActionScript:
  1. with (mc["neueBuchstaben" + i + "_txt"]) {
  2. setTextFormat(_root.my_textformat);
  3.         embedFonts = true;
  4. }
...funktioniert!!!

Was ist das Problem??

Alois
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-
Alois ist offline   Mit Zitat antworten
Alt 22-08-2003, 11:15   #15 (permalink)
stop the fog
 
Benutzerbild von < priZma >
 
Registriert seit: Apr 2003
Beiträge: 97
Zitat:
Geschrieben von Alois

...funktioniert!!!

Was ist das Problem??
Ja das dachte ich auch.
Wenn man bei den Texteigenschaften "embetFonts" auf true stellt geht Flash aber nur davon aus, das der Font eingebetet dargestellt werden soll. Er wird aber nicht durch die Option selbst eingebunden.

Dieser Beitrag bestärkt mich noch in meiner Annahme:
createTextField() und Einbettung von Schriftarten, kleines Tutorial

gruss, .priZma

Geändert von < priZma > (22-08-2003 um 11:19 Uhr)
< priZma > 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 11:25 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele