Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 06-01-2004, 10:17   #1 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 59
dynamische Namensvergabe bei Textfields - eigentlich simpel

Hallo,

folgendes Problem:

Ich habe ein Array (catarray), das voll von Objekten ist, deren Name ich mit Objekt.getName() abrufen kann.
Jetzt möchte ich unabhänig davon, wieviele Objekte im Array sind diese als Textfields ausgeben:
ActionScript:
  1. for (i=1; i<=end; i++) {
  2.         x=x+20;
  3.         y=y+20;
  4.         holder = catarray[i];
  5.         _root.createTextField("currentName",1,x,y,100,100);
  6.         currentName.multiline = true;
  7.         currentName.wordWrap = true;
  8.         currentName.border = false;
  9.         var currentName="currentName"+i;
  10.         currentName.text = holder.getName();
  11.         currentName.setTextFormat(myformat1);
  12.     }
So funktioniert es, aber eben nicht dynamisch, da der Instanzname für das Textfeld feststeht.
Ich füge als noch eine Zeile ein:
ActionScript:
  1. for (i=1; i<=end; i++) {
  2.         x=x+20;
  3.         y=y+20;
  4.         holder = catarray[i];
  5.         //neu
  6.         var currentName = holder.getName();
  7.         //Instanzname jetzt nicht mehr in ""
  8.         _root.createTextField(currentName,1,x,y,100,100);
  9.         currentName.multiline = true;
  10.         currentName.wordWrap = true;
  11.         currentName.border = false;
  12.         var currentName="currentName"+i;
  13.         currentName.text = holder.getName();
  14.         currentName.setTextFormat(myformat1);
  15.     }
Leider funktioniert das nicht.
Ich habe auch schon:
ActionScript:
  1. _root.createTextField(""+currentName+"",1,x,y,100,100);
probiert. Hat leider auch nichts gebracht.

Danke und Gruß

Bert
bbaum ist offline   Mit Zitat antworten
Alt 06-01-2004, 10:34   #2 (permalink)
jungflasher
 
Benutzerbild von sesamstrassenbe
 
Registriert seit: Oct 2002
Ort: Dortmund
Beiträge: 132
hallo,

warum schreibst du nicht:
ActionScript:
  1. _root.createTextField(["currentName" + i],1,x,y,100,100);
das müsste doch funzen, oder? hab grad leider keine möglichkeit zum testen...

gruß! daniel
__________________
sesamstrassenbert. so viel platz muss sein ;-)

www.digisurf.de
sesamstrassenbe ist offline   Mit Zitat antworten
Alt 06-01-2004, 11:40   #3 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 59
Funktioniert leider auch nicht.
Ich hab noch etwas experementiert und es scheint so, als ob das alles keine gültigen Strings wären.
Kann aber nicht sein, da ich z.B den Name mit
ActionScript:
  1. array[x]="xyz";
zuweise.
Weißt Du zufällig noch eine Möglichkeit, dass wenn ich mir den entsprechenden Namen in eine Variable schreibe, etwa so:
ActionScript:
  1. var name = array[x];
ich name ausdrücklich in einen String casten kann?

Ich denke dann würde es gehen, finde aber keine Methode.

Gruss und Danke

Bert
bbaum ist offline   Mit Zitat antworten
Alt 06-01-2004, 11:51   #4 (permalink)
jungflasher
 
Benutzerbild von sesamstrassenbe
 
Registriert seit: Oct 2002
Ort: Dortmund
Beiträge: 132
String(name);

aber ob's daran liegt...? viel erfolg!
__________________
sesamstrassenbert. so viel platz muss sein ;-)

www.digisurf.de
sesamstrassenbe ist offline   Mit Zitat antworten
Alt 06-01-2004, 12:00   #5 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 59
Ne das war es auch nicht.
Es muss doch eine Möglichkeit geben, Eine Variable, die eine String als Wert hat, statt einem String in
ActionScript:
  1. _root.createTextField(STRING/Variable,1,x,y,100,100);
einzusetzen?

Gruss Bert
bbaum ist offline   Mit Zitat antworten
Alt 06-01-2004, 12:04   #6 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
so (hab auch gleich mal with eingefügt):
ActionScript:
  1. for (i=1; i<=end; i++) {
  2.         x=x+20;
  3.         y=y+20;
  4.         holder = catarray[i];
  5.         //neu
  6.         var currentName = holder.getName();
  7.         //Instanzname jetzt nicht mehr in ""
  8.         _root.createTextField(currentName,1,x,y,100,100);
  9. wirth(_root[currentName]){
  10.         multiline = true;
  11.         wordWrap = true;
  12.         border = false;
  13.         //var currentName="currentName"+i;<<<der Sinn dieser Zeile ist mir völlig unklar
  14.         text = currentName;
  15.         setTextFormat(myformat1);
  16. }
  17. }

Gruß

Alois
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-
Alois ist offline   Mit Zitat antworten
Alt 06-01-2004, 12:10   #7 (permalink)
jungflasher
 
Benutzerbild von sesamstrassenbe
 
Registriert seit: Oct 2002
Ort: Dortmund
Beiträge: 132
ah! endlich hab ich das script verstanden :-)
__________________
sesamstrassenbert. so viel platz muss sein ;-)

www.digisurf.de
sesamstrassenbe ist offline   Mit Zitat antworten
Alt 06-01-2004, 13:08   #8 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 59
Ok, jetzt funktioniert der Code zwar:

ActionScript:
  1. for (i=1; i<=3; i++) {
  2.         x=x+120;
  3.         y=y+120;
  4.        
  5.         holder = catarray[i];
  6.  
  7.         var currentName = holder.getName();
  8.         trace(currentName);
  9.         _root.createTextField(currentName,1,x,y,100,100);
  10.         with(_root[currentName]){
  11.                 multiline = true;
  12.                 wordWrap = true;
  13.                 border = false;
  14.                 text = currentName;
  15.                 setTextFormat(myformat1);
  16.         }

Aber mir wird nur das letzte Textfeld wirklich angezeit.
Das currentName bei jedem Durchlauf einen anderen Wert hat, hab ich per trace überprüft.
Angezeigt wird immer nur der Letzte.
An und für sich, sollte es doch jetzt klappen?
Überlappen könne sie sich durch die Veränderung von x und y auch nicht.

...

Gruss und Danke

Bert
bbaum ist offline   Mit Zitat antworten
Alt 06-01-2004, 13:13   #9 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
ach ja, die tiefe:
ActionScript:
  1. for (i=1; i<=3; i++) {
  2.         x=x+120;
  3.         y=y+120;
  4.        
  5.         holder = catarray[i];
  6.        
  7.         var currentName = holder.getName();
  8.         trace(currentName);
  9.         _root.createTextField(currentName,i,x,y,100,100);//i eingefügt
  10.         with(_root[currentName]){
  11.                 multiline = true;
  12.                 wordWrap = true;
  13.                 border = false;
  14.                 text = currentName;
  15.                 setTextFormat(myformat1);
  16.         }
  17. }
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-
Alois ist offline   Mit Zitat antworten
Alt 06-01-2004, 13:15   #10 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 59
Werd ich gleich mal testen.

Danke und Gruss

Bert
bbaum ist offline   Mit Zitat antworten
Alt 07-01-2004, 15:26   #11 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 59
Yuppi, das war es. Jetzt funzt alles so wie es soll.

Schönen Dank Euch beiden.

Gruss Bert
bbaum 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 05:14 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele