Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-08-2005, 11:57   #1 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 12
dynamisch erzeugte MC nach alphabeth ordnen

hallo flasher!

nach langem probieren und suche im forum wollte ich euch mal um rat bitten:
folgendes "problem"

aus einer text/php datai lade ich die Menünamen(menu) und die Menüanzahl(mpunkte).
mittels attachMovie bringe ich den Movieclip mit der Verknüpfung "menue" in den Film. Nun möchte ich die dynamisch erzeugten Movieclips alpabethisch ordnen indem ich alle Menüpunkte die mit "a" beginnen bei x=20 positioniere, Menüpunkte die mit "b" beginnen bei x=40 positioniere, usw. Dabei sollen die einzelnen MenüPunkte immer an der gleichen y position starten.
BSP:

A B C D
A B C D
A C D
A C
A

Habe das ganze mit einer "charAt(0)" Abfrage versucht - was auch hinhaut - jedoch bekomme ich die "y" position nicht auf die Reihe....

Hoffe das Ihr mir dabei vielleicht helfen könntet....


Poste Code der auf einem MC liegt:

onClipEvent (load) {

loadVariables ("menu.txt", this);
}

onClipEvent (data) {
menu_punkte = menu.split(",");

for (i=1; i<=Number(mpunkte); i++) {
_parent.attachMovie("menue", "menue"+i, i);
with (_parent["menue"+i]) {
for (ai=1;ai<=a; ai++) {
if(menu_punkte[i-1].charAt(0)==="a"){

_x = 20;
_y =20*ai;
}
}
for (bi=1;bi<=b; bi++) {
if(menu_punkte[i-1].charAt(0)==="b"){

_x = 40;
_y =20*bi;
}
}


}
_parent["menue"+i].menu = menu_punkte[i-1];
}
}


Vielen Dank einstmal.
liebe Grüsse
steve bob ist offline   Mit Zitat antworten
Alt 24-08-2005, 01:09   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
hallo, schön das du hier mal reingesehen hast
und schau doch bitte auch mal ins handbuch.
da sind alle befehle aufgeführt und erklärt.

der_uns_unbekannte_text='Anna,Bertholt,Chila,Bruno ,Carl,Anton';
menu_punkte = der_uns_unbekannte_text.split(",").sort();
trace(menu_punkte);


php ist übrigens auch in der lage zu sortieren ;-)
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (24-08-2005 um 01:11 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 24-08-2005, 22:07   #3 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 12
Danke für deine Antwort, hat mir auf andere weise auf die Sprünge geholfen ...
Mir gings jedoch nicht primär ums alphabetischen "sortieren", da die daten sortiert in das file geladen werden, sonder darum wie ich die Movieclips auf der Bühne an "ordnen" kann. Sprich Spalten mit den "punkte A" neben "punkte B" neben "punkte C", soll später auch "2005" neben "2004" neben "2003" sein.

Nachdem ich weiss das die daten "sortiert" bekomme, dachte ich mir das es ja dann am einfachsten wäre der einen schleife zu sagen " duplizier sie mir und zähl mir alle runter "
ActionScript:
  1. for (i=1; i<=Number(mpunkte); i++) {
  2. _parent.attachMovie("menue", "menue"+i, i);
  3. with (_parent["menue"+i]) { ....
und mit der anderen "wenn der anfangsbuchstabe wechselt schieb die nachfolgenden um 20 punkte weiter nach rechts"
ActionScript:
  1. ....for (ai=1;ai<=a; ai++) {
  2. if(menu_punkte[i-1].charAt(0)==="a"){
  3. _x = 20;
  4. _y =20*ai;
  5. }
  6. }
Nur so wie gepostet gehts nicht... :-(

Mein zweiter Lösungsansatz dazu wäre gewesen vorerst alle Anfangsbuchstaben die mit a beginnen mit

ActionScript:
  1. var anzahl_a = 0;
  2. for (anzahl_a<=menue_punkte.length){
  3. if(menu_punkte[i-1].charAt(0)==="a"){
  4. anzahl_a++
  5. }
  6. }
auszulesen um dann die yposition mit

ActionScript:
  1. if(menu_punkte[i-1].charAt(0)==="a"){
  2.  
  3. _x = 20;
  4. _y =20*i;
  5. }
  6. }
  7. if(menu_punkte[i-1].charAt(0)==="b"){
  8.  
  9. _x = 20;
  10. _y =20*(i-anzahl_a);
  11. }
  12. }

aber da haut auch noch irgendetwas nicht hin .... :-(

sitz ich jetzt am komplett falschen damper, und löst man solche spalten-ordnungsprobleme komplett anders, oder liegts einfach an meiner anfänger syntax?
steve bob ist offline   Mit Zitat antworten
Alt 24-08-2005, 22:52   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
wenn deine daten schon sortiert sind, was soll dann die ganze sucherei in den for schleifen?

"wenn der anfangsbuchstabe wechselt schieb die nachfolgenden um 20 punkte weiter nach rechts"
UND beginnst wieder von oben. fertig?

xanfang=10;
yanfang=30;
xabstand=50;
yabstand=20;

// beginn
xpos=xanfang;
ypos=yanfang;

// next mc
ypos+=yabstand;

// next buchstabe
xpos+=xabstand;
ypos=yanfang;
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 25-08-2005, 00:35   #5 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 12
joo genau so

ActionScript:
  1. onClipEvent (load) {
  2.     loadVariables ("menu.txt", this);
  3. }
  4. onClipEvent (data) {
  5. //das kommt aus den textfile/php file: 
  6. //punkte=10;
  7. //variante daten kommen unsortiert
  8. //menue="alles,amen,arg,bierbauch,cool,doof,budda,dingsda,aladin,dumm";
  9. //zuerst mall sortieren 
  10.  
  11. menue_list = menue.split(",").sort();
  12.  
  13. //wills mir nur zur kontrolle anzeigen lassen...
  14. this._parent.menue_list=menue_list;
  15.  
  16.  
  17. //Variablen für das auszählen der Anfangsbuchstaben 
  18.  var a=0
  19.  var b=0
  20.  var c=0
  21.  var d=0
  22.  
  23. // Positionierung der Movieclips auf der Bühne
  24. // erste for schleife für alle Movieclips
  25.     for (i=1; i<=Number(punkte); i++) {
  26.         _parent.attachMovie("menue", "menue"+i, i);
  27.         with (_parent["item"+i]) {
  28.            
  29. //ordnen der Moviclips
  30. //auslesen aller Anfangsbuchstaben die mit a beginnen
  31. if(menue_list[i-1].charAt(0)==="a"){
  32.            
  33.             a = a+1;
  34.             //this._parent.anzahl_a=a;//sollte man es anzeigen wollen
  35.             _x = 20;
  36.  
  37. //y-wert noch ganz normal mit fixem wert 40 und variable i definiert           
  38. _y =40+20*(i-1);
  39.            
  40.             }
  41. //auslesen aller Anfangsbuchstaben die mit b beginnen
  42.             if(menue_list[i-1].charAt(0)==="b"){
  43.             b = b+1
  44.            
  45.            
  46. //Moviclip "menue5" springt um 20 punkte weiter
  47. _x = 40;
  48.            
  49. //i ist jetzt 4 weil es 4 wörter gibt die mit a beginnen
  50. //y wert des Moviclip "menue5" == erster Buchstabe mit B soll aber gleich sein wie Moviclip "menue1" == erster Buchstabe mit A also
  51. _y =40+20*(i-1-a);//_y = anfangswert + abstand zwischen den MC * eigener index (in dem Fall 5) -1 (weill schleife mit 1 begonnen) - a (indem Fall 4) = 0  = selber _y wert wie Moviclip "menue1"
  52.            
  53.             }
  54. //auslesen aller Anfangsbuchstaben die mit c beginnen
  55.              if(menue_list[i-1].charAt(0)==="c"){
  56.             c=c+1
  57.            
  58.             _x = 60;
  59.             _y =40+20*(i-1-a-b);
  60. //auslesen aller Anfangsbuchstaben die mit c beginnen         
  61.              }
  62.              if(menue_list[i-1].charAt(0)==="d"){
  63.             d=d+1
  64.            
  65.             _x = 80;
  66.             _y =40+20*(i-1-a-b-c);
  67.          }
  68.          }
  69. //den Menuenamen für die Variable"mitschicken"
  70.         _parent["menue"+i].menuename = menue_list[i-1];
  71.     }
  72.     }
haut jetzt erstmal hin
Fehler war in der ausleseschleife für die Buchstaben - hat nicht hochgezählt dadurch hat sich nichts verändert.

mit der doppelten for -schleife bin ich super auf der leitung gestanden....

besten dank für die anregungen - hat mir echt weitergeholfen

hoffe das irgendjemand was mit dem gekrizle auch was anfangen kann......


probier des ganze dann auch noch nach jahreszahlen geordnet...
steve bob ist offline   Mit Zitat antworten
Alt 25-08-2005, 01:01   #6 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 12
geht des überhaupt mit charAt()? habs grad probiert aber hat net hinghaut....
steve bob ist offline   Mit Zitat antworten
Alt 25-08-2005, 04:14   #7 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
_y =40+20*(i-1-a-b-c);
jau ai, geile nummer

du solltest in die politik gehen, aber auf garkeinen fall etwas mit programmieren anfangen ;-)
Angehängte Dateien
Dateityp: zip abcmenu.zip (6,0 KB, 6x aufgerufen)
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (25-08-2005 um 04:24 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 25-08-2005, 15:25   #8 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 12
besten dank für das zip :-) und den tip mit der politik ;-))
also program irren gehört sicher nicht zu meinen stärken....
super file!!

hab an dem ganzen mit deinem script weitergearbeitet und das ganze mit einer sortierfunktionslösung versehen, durch die ich aus dem forum inspiriert worden bin

poste das ganze als zip und ohne komentare in gewohnter Holzhackermanier
;-) weniger schreiben - mehr programieren.

die einzige frage die mich noch beschäftigt wäre wie ich es schaffen könnte die Buchstaben und Nummern fortlaufend zu erhalten Bsp statt "2003,2000,1987", "2003,2002,2001" bzw "A, D, F" zu "A,B,C,D,E" auch wenn keine einträge vorhanden sind....

besten Dank auf alle Fälle für das zip - zeigt wieder einmal wie einfach Dinge sein können wenn man sie trotz hoher komplexität einfach formuliert.
Angehängte Dateien
Dateityp: zip abcmenufinale2.zip (21,9 KB, 5x aufgerufen)
steve bob ist offline   Mit Zitat antworten
Alt 25-08-2005, 18:54   #9 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
"..also programmiren gehört sicher nicht zu meinen stärken.."
es muss nicht jeder alles können. du hast dich wenigstens bemüht. das kann man nicht von jedem fragesteller hier im forum behaupten.

"2003,2000,1987", "2003,2002,2001" bzw "A, D, F" zu "A,B,C,D,E"
die reihenfolge ist egal, hauptsache, es steht zusammen, was zusammen gehört. und (oldchar != char) 'sieht' nur den unterschied. wie gross der unterschied ist zählt nicht.
wenn du den natürlich berücksichtigen wills, dann char-oldchar leerpositionen einfügen.

rückwärts
menu_liste.split(",").sort().reverse();

und spezielle sortierungen:
http://www.seibsprogrammladen.de/fra...orithmen/Array
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (25-08-2005 um 18:56 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 25-08-2005, 20:38   #10 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 12
Danke für deine Antwort, werd mich in diese richtung schlau machen. hab auch schon wieder schönheitsfehler in der syntax gefunden ...sollte jedoch keine probleme bereiten ...
besten Dank auf alle Fälle

PS:nette seite, vorallem das "wo stehe ich".
werd sie mir einmal in aller ruhe reinziehen...

liebe grüsse
steve bob 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 08:05 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele