Zurück   Flashforum > Flash > ActionScript > ActionScript 2

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-05-2007, 11:21   #1 (permalink)
Neuer User
 
Registriert seit: May 2005
Beiträge: 11
Question Wo sind die Textfelder ???

Hallo !

Ich möchte mir mit AS dynamisch Textfelder erstellen. Dazu habe ich mir zwei Klassen geschrieben: Text, das die einzelnen Textfelder darstellen soll und TextVO, mit der ich alle erstellten Textfelder verwalten will. Aber, aus mir noch unerklärlichen Gründen werden keine Textfelder angezeigt. Im Debugger sind die Objekte zwar mit alle Eigenschaften richtig angelegt, aber auf der Bühne ist nichts zu sehen.

Hier mal der letzte Stand der beiden Klassen:

ActionScript:
  1. class Text extends MovieClip{ // oder besser ohne MovieClip
  2.    
  3.     public var _x:Number;
  4.     public var _y:Number;
  5.     private var word:String;
  6.     private var cat:String;
  7.     private var txtField:TextField;
  8.     private var txtFormat:Array;    // enthält TextFormat für jeden Buschtaben des Wortes
  9.    
  10.     public function Text(mc:MovieClip, word:String){
  11.         var id:Number = mc.getNextHighestDepth();
  12.         this.txtField = mc.createTextField("word_"+id,id,100,100,0,0);
  13.         this.txtField.text = word;
  14.         this.txtField.variable = "VAR"+word;
  15.         this.word = word;
  16.         this.txtFormat = new Array();
  17.         applyProperties();
  18.         applyFormat();
  19.         trace("TEXT: "+word+" "+id);
  20.     }
  21.    
  22.     private function applyProperties():Void{
  23.     }
  24.    
  25.     public function applyFormat():Void{
  26.     }
  27.    
  28.     public function toString():String{
  29.         return this.word;
  30.     }
  31.    
  32.     public function setCat(cat:String):Void{
  33.         this.cat = cat;
  34.     }
  35. }
ActionScript:
  1. class TextVO{
  2.    
  3.     private var words:Array;    // enthält Wörter, die zufällig ausgewählt werden
  4.     private var used:Array;  // speichert die bereits benutzten Wörter
  5.     private var txtMc:MovieClip;
  6.    
  7.     public function TextVO(txtMc:MovieClip){
  8.         this.words = Array("wort1","wort2","wort3");
  9.         this.used = Array();
  10.         this.txtMc = txtMc;
  11.         trace("TextVO erstellt");
  12.     }
  13.    
  14.     public function addText(){
  15.         var newWord = randArray(words)// zufälliges Wort suchen
  16.         var done = false;
  17.        
  18.         do{
  19.             if(!inArray(used,newWord)){
  20.                 var tmpWord:Text = new Text(this.txtMc, newWord);   // neues Text-Objekt erstellen
  21.                 tmpWord.setCat(categorize(newWord));
  22.                
  23.                 used.push(tmpWord)// neues Wort als benutzt speichern
  24.                 delete tmpWord;
  25.                 done = true;
  26.                 trace(newWord+ " angelegt");
  27.             } else {
  28.                 newWord = randArray(words);
  29.                 trace("nächstes Wort versuchen");
  30.             }
  31.         } while(!done);
  32.     }
  33.    
  34.     private function categorize(word:String):String{
  35.     }
  36.    
  37.     private function randArray(array:Array):String{
  38.     }
  39.    
  40.     private function randRange(min:Number, max:Number):Number {
  41.     }
  42.  
  43.     private function inArray(array:Array, search:String):Boolean{
  44.     }
  45.  
  46. }
Und der Aufruf:
ActionScript:
  1. var tVO:TextVO = new TextVO(_root);
  2. tVO.addText();

Was habe ich falsch gemacht, bzw was muss ich machen damit die Textfelder angezeigt werden?

Ich sag schon mal danke für eure kreativen Lösungsvorschläge

Geändert von panzerfahrer (20-05-2007 um 12:20 Uhr)
panzerfahrer ist offline   Mit Zitat antworten
Alt 20-05-2007, 11:42   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.139
Wieso ist die Klasse Text ein MovieClip? Entweder du kapselst das Textfeld in der Klasse/dem MovieClip oder du machst da eine "einfache" Klasse draus. In meinen Augen beissen sich Sinn und Funktionalitäten etwas...

Vielleicht resultiert daraus auch das Problem: Wenn du Text nur einmal instanziierst, überschreibst du die lokalen Variablen... aber momentan kein Plan, weil ich das System nicht ganz verstehe.
Omega Psi ist offline   Mit Zitat antworten
Alt 20-05-2007, 12:20   #3 (permalink)
Neuer User
 
Registriert seit: May 2005
Beiträge: 11
ja stimmt, Text muss kein MovieClip sein, ist ohne vielleicht sinnvoller. aber es ändert nichts am Ergebnis.

ich hab mal ein paar Kommentare hinzugefügt, vielleicht wirds dann etwas klarer was ich da versuche

wie meinst du das mit dem Überschreiben der lokalen Variablen? TextVO wird einmal instanziiert, und in TextVO werden dann je nach belieben viele Text-Objekte instanziiert. Zumindest habe ich mir dass so gedacht

Geändert von panzerfahrer (20-05-2007 um 12:27 Uhr)
panzerfahrer ist offline   Mit Zitat antworten
Alt 20-05-2007, 15:20   #4 (permalink)
Neuer User
 
Registriert seit: May 2005
Beiträge: 11
vielleicht mal eine ganz andere Frage: Kann ich überhaupt ein TextField mittels einer Klasse (also so wie ich's versuche) erstellen, oder klappt das nur in der zeitleiste?
panzerfahrer ist offline   Mit Zitat antworten
Alt 20-05-2007, 15:40   #5 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.139
Das funktioniert, nicht anders als mit MovieClips.
Omega Psi ist offline   Mit Zitat antworten
Alt 20-05-2007, 16:09   #6 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.139
Und nebenbei:

Flash MX 2004: MovieClip.createTextField():Void
Flash 8 Proff.: MovieClip.createTextField():TextField

Geändert von Omega Psi (20-05-2007 um 16:11 Uhr)
Omega Psi ist offline   Mit Zitat antworten
Alt 20-05-2007, 16:24   #7 (permalink)
Neuer User
 
Registriert seit: May 2005
Beiträge: 11
joa, hab Ver.8 Pro

hab den Fehler gefunden, an einer Stelle, an der ich es irgendwie am wenigsten erwartete:

in meiner applyFormat weise ich jedem Buchstaben eine andere eingebettete Schriftart zu
ActionScript:
  1. //(...)
  2. this.txtField.setTextFormat(i,i+1,txtFormat[id-1]);
  3. //(...)
  4.  
das +1 bei dem Indexende hatte gefehlt

... boha, und dafür hab ich jetzt fast den ganzen Tag gebraucht
panzerfahrer 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 12:46 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele