| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Jan 2003
Beiträge: 109
| buttons dynamisch erzeugen
hi, ich bin's mal wieder... ich möchte gern buttons dynamisch laden. ich lese aus einem xml-file die anzahl der benötigten buttons aus und möchte dem entsprechend genau so viele auch auf der hauptebene erzeugen. in diesem beispiel sollen es drei buttons sein, die unter einander mit einer start position und einem abstand von 1 stehen: meinXML = new XML (); meinXML.ignoreWhite = true; meinXML.onLoad = function (geladen){ if (geladen){ anzahlDatensaetze = this.firstChild.childNodes.length; anzahlROWs = anzahlDatensaetze - 3; //Menue-Buttons dynamisch erzeugen startx = 238; starty = 168; abstand = 1; for (i = 1; i <= anzahlROWs; i++){ trace ("Datensatz: " + i + " von " + anzahlROWs); var mc = _root.attachMovie("MButt_mc", "m"+i, 1); trace ("Neues Objekt heisst:" + "m"+i); mc._x = startx; mc._y = starty+i*(mc._height + 1); trace ("Seine Position: " + mc._y); } }//Ende: if(geladen)-Schleife else{ trace ("Fehler beim Laden der XML-Datei..."); }//Ende: else(geladen)-Schleife };//Ende: Main-Funktion // Laden des XML-Files meinXML.load ("golf.xml"); die ausgabe ergibt folgendes ergebnis: Datensatz: 1 von 3 Neues Objekt heisst:m1 Seine Position: 192.8 Datensatz: 2 von 3 Neues Objekt heisst:m2 Seine Position: 217.6 Datensatz: 3 von 3 Neues Objekt heisst:m3 Seine Position: 242.4 also erzeugt er doch die drei!? mein problem: es ist nur ein button zu sehen! scheinbar liegen die übereinander??? danke. gruß, toggle |
| | |
| | #2 (permalink) |
| ... Registriert seit: Oct 2002 Ort: Nürnberg
Beiträge: 3.611
|
nein, sie werden ueberschrieben, weil die tiefe immer gleich bleibt. Aender mal folgende zeile: ActionScript:
ActionScript:
|
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Jan 2003
Beiträge: 109
|
Hi Thorben! Danke. Hat funktioniert ![]() Nur wenn ich das jetzt noch um ein Textfeld im Button-MC erweitere, zeigt er mir dieses nicht an! Es gibt also einen Movieclip, den ich per AS anspreche, der wiederum zwei Ebenen enthält: eine für den Button und eine für ein Textfeld mit Namen "beschriftung" und Variable "txtB". Hast Du da auch noch ne Idee? Dankee. |
| | |
| | #5 (permalink) |
| ... Registriert seit: Oct 2002 Ort: Nürnberg
Beiträge: 3.611
| ActionScript:
|
| | |
| | #7 (permalink) |
| Neuer User Registriert seit: Jan 2003
Beiträge: 109
|
hab doch noch mal ne frage...total-blackout! ich fülle in der einen for-schleife ein array mit den buttonbeschriftungen und in einer anderen for-schleife erstelle ich die buttons, je nach anzahl im button-array. nun meine ganz blöde frage: das erzeugte array mit den beschriftungen ist ja nur in der for-schleife für die beschriftungen bekannt. ich brauch aber das ergebnisarray in der button-for-schleife... hier noch mal mein aktuelles script: //Menue dynamisch erzeugen anzahlDatensaetze = this.firstChild.childNodes.length;//alle in <FMPDSORESULT> anzahlROWs = anzahlDatensaetze - 3;//nur die <ROW> - Elemente startx = 120.2; starty = 204; abstand = 3; Button-Schleife: for (i = 1; i <= anzahlROWs; i++){ //Buttons var mc = _root.attachMovie("MButt_mc", "m"+i, i); mc._x = startx; mc._y = starty+i*(mc._height + 3); //Textfelder mc.beschriftung.text = beschriftung_array[i+1]; } Beschriftungs-Schleife: //Headlines für Textfelder sammeln = beschriftung_array for (i = 1; i <= anzahlROWs; i++){ beschriftung_array = this.firstChild.childNodes[i+2].childNodes[0].firstChild; } ist bestimmt nur wieder ein blöder denkfehler von mir...? |
| | |
| | #8 (permalink) |
| Gast
Beiträge: n/a
| ähm, jo..denkfehler.. ![]() Wieso packst Du nicht beides in eine Schleife? ActionScript:
...Du hast ja jeweils nur so viele Beschriftungen, wie Du auch Buttons hast. anyway. |
|
| | #10 (permalink) |
| Neuer User Registriert seit: Jan 2003
Beiträge: 109
|
hi ihr da draussen... leider überschreibt er mir jetzt die jeweilige button-aktion. er erfüllt nur die function für den letzten mc. über "m"+i kann ich ihn ja nicht ansprechen. aber wie sonst?? danke für eure hilfe... for (i = 0; i < anzahlROWs; i++){ //Buttons var mc = _root.attachMovie("MButt_mc", "m"+i, i); mc.onRelease = function(){ _root.seite = "ok für Seite: "+i; } mc._x = startx; mc._y = starty+i*(mc._height + 3); //Textfelder mc.beschriftung.text = this.firstChild.childNodes[i+3].childNodes[0].firstChild; } |
| | |
| | #11 (permalink) |
| Gast
Beiträge: n/a
| Jeder Button weis doch wer er ist...: ActionScript:
..Diese relativen, weil auf den jeweiligen Button bezogenen Daten kanns Du doch viel praktischer auswerten, als wenn Du über eine weitere Variable (_root.seite = "ok für seite...bla")arbeitest, die Du eigentlich nicht brauchst..Nicht immer so kompliziert denken, hehe...Und bitte mal die AS-Formatierung in deinen Posts benutzen - macht sonst wenig Spaß, sich den Code durchzulesen.. anyway. |
|
| | #12 (permalink) |
| Neuer User Registriert seit: Jan 2003
Beiträge: 109
|
ok, danke. mir ging es auch nur darum, wie ich den einzelnen button anspreche, wenn ich auf ihn eine aktion legen will. also z.B. button drei öffnet button3.swf und button vier öffnet button4.swf. dafür muss ich ja abfragen, ob this._name == "m2" ist. das textfeld "seite" sollte mir nur mal zur kontrolle was ausgeben. und dann noch mal kurz zur as-formatierung: ist mir ja peinlich, aber wie stelle ich das ein? gruß, toggle |
| | |
| | #13 (permalink) |
| Neuer User Registriert seit: Jan 2003
Beiträge: 109
|
hi, wenn ich die onRelease-Funktion in die for-Schleife einfüge, wird der Mouse-Over-Zustand des Buttons nicht mehr angezeigt. Nehme ich die Funktion raus, funktioniert es. hä? Geändert von toggle (09-12-2003 um 09:26 Uhr) |
| | |
| | #14 (permalink) |
| Neuer User Registriert seit: Aug 2002 Ort: Faust-Stadt
Beiträge: 2.577
|
hi ActionScript:
__________________ gruß Harry |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |