Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 10-01-2005, 01:20   #1 (permalink)
A..
PostTraum
 
Registriert seit: Apr 2003
Beiträge: 300
Text format zuweisung und errechnen der höhe des textfeldes

hi und hallo,

ich wende textfield prototype
PHP-Code:
TextField.prototype.onNorm = function (name) {
    
name.embedFonts true;
    
name.multiline true;
    
name.wordWrap true;
    
name.autoSize "left"
    
name.selectable false;
    
format = new TextFormat ();
    
format.font "Unibody 8";
    
format.size "8"
    
name.setTextFormat(format); 
auf einen createTextField an.
PHP-Code:
pathDisplay["box"+i]["inhalt_txt"+j].onNorm (pathDisplay["box"+i]["inhalt_txt"+j]); 
das "box"+i is der mc der alle textfelder hält. "inhalt_txt"+j ("j" is die for in variable der textfeld nummer, d. h. das die Anzahl der Felder nach Länge eines Arrays gehen.)

doch anscheinend ist der _height-wert von box+i
PHP-Code:
pathDisplay["box"+i]._height 
ein wenig später erst "richtig" da. so das "m" als yposition wert des nächstes "inhalt_txt"+j bei vorherigen "inhalt_txt"+j mit mehreren Zeilen (ab 4 Zeilen), falsch weitergeben wird. Und so landet das weitere Textfeld etwas zuweit oben, also zu wenig "m" weitergeben wurde. Die Zuweisung erfolgt später als die nächste Zeile gelesen ist. Und das m "muss" in der Schleife berechnet werden.

Timing Probleme in Flash ? Weiss einer weiter?
A.. ist offline   Mit Zitat antworten
Alt 10-01-2005, 02:24   #2 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
hmmm...
zeig mal das komplette script her...



*ich weiß aber net, ob ich das jetzt noch beantworte, da meine frau mich inss bett.zerrt.. zum heia machen..



greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 10-01-2005, 02:41   #3 (permalink)
A..
PostTraum
 
Registriert seit: Apr 2003
Beiträge: 300
uaah warte hier extrahiert

ändere einfach den k wert auf root von 0 bis 3

sollte alles gut gehen ausser 2
Angehängte Dateien
Dateityp: zip test.zip (4,7 KB, 10x aufgerufen)
A.. ist offline   Mit Zitat antworten
Alt 10-01-2005, 02:43   #4 (permalink)
A..
PostTraum
 
Registriert seit: Apr 2003
Beiträge: 300
die positionierung und die errechnung ist bibliothek -> con_con ("ten_ten") im frame 3 probleme mit "mm" der for in schleife mit "m".

Geändert von A.. (10-01-2005 um 02:50 Uhr)
A.. ist offline   Mit Zitat antworten
Alt 10-01-2005, 12:25   #5 (permalink)
A..
PostTraum
 
Registriert seit: Apr 2003
Beiträge: 300
*PUSH.... lustigerweise , wenn ich ein trace (pathDisplay["box"+i]._height ); vor mm = pathDisplay["box"+i]._height anlege klappts
A.. ist offline   Mit Zitat antworten
Alt 10-01-2005, 15:08   #6 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
aaalsoo...erstemal macha ma struktur bessser leserlich..

bild 3 deines con_con -mc´s in der bib!
ich hab das mal gekürzt, um´s leserlicher zu machen...
ActionScript:
  1. var cont = _root[(_root.btid)]["content_arr"+k];
  2. var box = pathDisplay["box"+k];
  3. if (n==cont.length) {
  4.     stop();
  5. } else {
  6.     box.createTextField("datum_txt"+n,10000+n,0,xpos,100,0);
  7.     var tft = box['datum_txt'+n];
  8.     tft.text = cont[n].attributes.datum;
  9.     tft.onNorm ();
  10.     mm = tft._y + box["inhalt_txt"+o]._height
  11.     for (var m = 0; m < cont[n].childNodes.length; m++) {
  12.     box.createTextField("inhalt_txt"+o,10100+o,115,mm,250,0);
  13.     var inhaltTXT = box['inhalt_txt'+o];
  14.     inhaltTXT.html= true;
  15.     inhaltTXT.htmlText = cont[n].childNodes[m].firstChild.nodeValue;
  16.     inhaltTXT.onNorm ();
  17.     mm = box._height
  18.     o++;
  19.     }
  20. }



zweitens deine...prototype-funktion kann auch so aussehen...:
ActionScript:
  1. TextField.prototype.onNorm = function () {  // Mengentext
  2.     this.type = "dynamic"
  3.     this.embedFonts = true;
  4.     this.multiline = true;
  5.     this.wordWrap = true;
  6.     this.autoSize = "left"
  7.     this.selectable = false;
  8.     format = new TextFormat ();
  9.     format.font = "Arial";
  10.     format.size = "12"
  11.     //format.leading = "2"
  12.     //format.color = 0x555555
  13.     this.setTextFormat(format);
  14. }

das ist exakt das gleiche, wasa du hattest, nur dass ich weder das eigene textfeld als parameter übergebe, noch dass ich mit nem parameter arbeiten muss, da ja IMMER dein textfeld selbst die funktion ruft und du immer das textfeld nochmals als parameter übergeben hast.
das geht innerhalb der prototype-funktion einfach mit : this ...

so...das schon mal zur bessern lesbarkeit und natürlich zum schnelleren arbeiten für flash...
nun zu deinem prob.
das liegt wohl in diesem dritten bild in con_con, oder?!
dort wird ja in der vorletzten zeile mit _height gearbeitet.hmmm..
mal sehen...


greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 10-01-2005, 15:15   #7 (permalink)
A..
PostTraum
 
Registriert seit: Apr 2003
Beiträge: 300
also. ja ... var okay ich habs nicht mehr automatieren können.
Okay. stimmt this. ja sollte schneller gehen. danke

ja das mit _height is strange. ich hatte aber schon die verrücktesten mathematischen distanzrechnung mit vorhandenen und noch nicht vorhandenen textfelder gemacht ... traumhaft, sag ich nur

gruss
a..
A.. ist offline   Mit Zitat antworten
Alt 10-01-2005, 15:31   #8 (permalink)
A..
PostTraum
 
Registriert seit: Apr 2003
Beiträge: 300
okay ich hab... es geht jetzt mit

mm = inhaltTXT._y + inhaltTXT._height

da n=0; hat wurde der 1ste Knoten übersprungen, wirst du wohl auch schon gemerkt haben. Jetzt gehts aber. Ich denk das ich mit viel längeren Textzeilen wohl probs bekommen aber länger muss es ja nicht werden... danke kelor, für die sehr hilfreiche Hilfe.


gruss
a..
A.. ist offline   Mit Zitat antworten
Alt 10-01-2005, 15:47   #9 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
hey...gerne geschehen...wenn du willst, kannst du in den anderen bildern in con_con auch die scripte noch ersetzen...:

lösche bild1 in con_con ganz raus...so dass nun bild bereits bild 1 ist und setz folgenden code rein...

hier mal für bild 2, dass nun bild 1 ist:
ActionScript:
  1. var rootData = _root[(_root.btid)];
  2. var elem = rootData.mydata.firstChild.childNodes;
  3. var laenge = elem.length;
  4. var pathDisplay = _root.display;
  5.  
  6. for (j=0;j<laenge;j++) {
  7.      var arrname = "content_arr"+j
  8.      rootData[arrname] = new Array();
  9.      for (i=0;i < elem[j].childNodes.length;i++) {
  10.           rootData[arrname][i] = elem[j].childNodes[i];
  11.           if (j== (laenge-1) && i == ((elem[j].childNodes.length) -1)) {
  12.               var o=0;
  13.               pathDisplay.createEmptyMovieClip("box"+k,6000+k);
  14.               pathDisplay["box"+k]._y = 30;
  15.               putListe1 () 
  16.           }
  17.      }
  18. }
  19. function putListe1 () {
  20.         gotoAndPlay("listall");
  21. }

und in bild 2, dass mal bild 3 war:
ActionScript:
  1. var cont = _root[(_root.btid)]["content_arr"+k];
  2. var box = pathDisplay["box"+k];
  3. if (n==cont.length) {
  4.     stop();
  5. } else {
  6.     box.createTextField("datum_txt"+n,10000+n,0,xpos,100,0);
  7.     var tft = box['datum_txt'+n];
  8.     tft.text = cont[n].attributes.datum;
  9.     tft.onNorm ();
  10.     var mm = tft._y + box["inhalt_txt"+o]._height
  11.     for (var m = 0; m < cont[n].childNodes.length; m++) {
  12.     box.createTextField("inhalt_txt"+o,10100+o,115,mm,250,0);
  13.     var inhaltTXT = box['inhalt_txt'+o];
  14.     inhaltTXT.html= true;
  15.     inhaltTXT.htmlText = cont[n].childNodes[m].firstChild.nodeValue;
  16.     inhaltTXT.onNorm ();
  17.     mm = box._height
  18.     o++;
  19.     }
  20. }

und in bild 3, dass mal bild 4 war:
ActionScript:
  1. xpos = box._height;
  2. n++;
  3. gotoAndPlay("listall");


achja..und das script auf :_root
ActionScript:
  1. TextField.prototype.onNorm = function () {  // Mengentext
  2.     this.type = "dynamic"
  3.     this.embedFonts = true;
  4.     this.multiline = true;
  5.     this.wordWrap = true;
  6.     this.autoSize = "left"
  7.     this.selectable = false;
  8.     format = new TextFormat ();
  9.     format.font = "Arial";
  10.     format.size = "12"
  11.     //format.leading = "2"
  12.     //format.color = 0x555555
  13.     this.setTextFormat(format);
  14. }
  15. buildContent = function () {
  16.     _root.attachMovie("con_con","ten_ten",4998);
  17.     //trace (_root[_root.btid].mydata.titel)
  18. }
  19. function getNormXml(dataStr) {
  20.     if (_root[dataStr] == undefined) {
  21.         _root.createEmptyMovieClip(dataStr,100+_root.nrid);
  22.     }
  23.     xmldata = new XML ();
  24.     xmldata.ignoreWhite = true;
  25.     xmldata.dStr = dataStr;
  26.     xmldata.onLoad = function (success) {
  27.         if (success) {
  28.             if (_root[(this.dStr)].mydata == undefined) {
  29.                 _root[(this.dStr)].mydata = xmldata;
  30.                 delete xmldata;
  31.                 //trace (_root[(_root.btid)].mydata);
  32.                 _root.nrid++;
  33.                 buildContent();
  34.             } else {
  35.                 buildContent()
  36.             }
  37.         }
  38.         else {
  39.             _root.ausgabe_txt.text = "No Data";
  40.         }
  41.     }
  42.     xmldata.load("vdatas/"+dataStr+".xml");
  43. }
  44. var btid = "vlisting";
  45. _global.k = 2;
  46. getNormXml(btid);


( mußt nur noch deinen eben von dir erwähnte änderung einfügen in bild 2 von con_con)




hope this helps a bit


greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 10-01-2005, 16:21   #10 (permalink)
A..
PostTraum
 
Registriert seit: Apr 2003
Beiträge: 300
ja sicher!!! Danke nochmals ... ich sehe ich sollte doch mehr mit var arbeiten. is ja eigentlich pflicht, i know. ich war aber immer zu "faul" . Werde das wohl aber in zukunft ändern "müssen". Scheint ja so auch performatenter zu sein.
Also Thnx alot. -vc-

gruss
a..
A.. 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 09:55 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele