Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 08-12-2003, 06:56   #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
toggle ist offline   Mit Zitat antworten
Alt 08-12-2003, 07:53   #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:
  1. var mc = _root.attachMovie("MButt_mc", "m"+i, 1);
... in...
ActionScript:
  1. var mc = _root.attachMovie("MButt_mc", "m"+i, i);
thorben.schmitt ist offline   Mit Zitat antworten
Alt 08-12-2003, 07:56   #3 (permalink)
funkdisziplin
 
Registriert seit: Jul 2003
Beiträge: 2.790
hi,
thorben + AS Formatierung - gehts noch kleiner?!
derdiedas ist offline   Mit Zitat antworten
Alt 08-12-2003, 08:26   #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.
toggle ist offline   Mit Zitat antworten
Alt 08-12-2003, 09:01   #5 (permalink)
...
 
Registriert seit: Oct 2002
Ort: Nürnberg
Beiträge: 3.611
ActionScript:
  1. meinXML = new XML();
  2. meinXML.ignoreWhite = true;
  3. meinXML.onLoad = function(geladen) {
  4.     if (geladen) {
  5.         startx = 238;
  6.         starty = 168;
  7.         beschriftung_array = ["hallo", "ich ", "bin", "der", "Buttontext"];
  8.         for (i=1; i<=this.firstChild.childNodes.length-3; i++) {
  9.             var mc = _root.attachMovie("MButt_mc", "m"+i, i);
  10.             mc._x = startx;
  11.             mc._y = starty+i*(mc._height+1);
  12.             mc.beschriftung.text = beschriftung_array[i+1];
  13.         }
  14.     } else {
  15.         trace("Fehler beim Laden der XML-Datei...");
  16.     }
  17. };
  18. meinXML.load("golf.xml");
thorben.schmitt ist offline   Mit Zitat antworten
Alt 08-12-2003, 09:12   #6 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Beiträge: 109
und wieder donke!

toggle ist offline   Mit Zitat antworten
Alt 08-12-2003, 10:40   #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...?
toggle ist offline   Mit Zitat antworten
Alt 08-12-2003, 10:58   #8 (permalink)
anyway
Gast
 
Beiträge: n/a
ähm, jo..denkfehler..

Wieso packst Du nicht beides in eine Schleife?

ActionScript:
  1. for (i = 1; i <= anzahlROWs; i++){
  2. //Buttons
  3. var mc = _root.attachMovie("MButt_mc", "m"+i, i);
  4. mc._x = startx;
  5. mc._y = starty+i*(mc._height + 3);
  6. //Textfelder
  7. mc.beschriftung.textthis.firstChild.childNodes[i+1].childNodes[0].firstChild;
  8. }


...Du hast ja jeweils nur so viele Beschriftungen, wie Du auch Buttons hast.

anyway.
  Mit Zitat antworten
Alt 08-12-2003, 11:04   #9 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Beiträge: 109
ja, ja...auch flash macht müde

danke. alles funzt!
toggle ist offline   Mit Zitat antworten
Alt 08-12-2003, 12:40   #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;
}
toggle ist offline   Mit Zitat antworten
Alt 08-12-2003, 12:49   #11 (permalink)
anyway
Gast
 
Beiträge: n/a
Jeder Button weis doch wer er ist...:

ActionScript:
  1. mc.onRelease = function(){
  2. trace ("hallo ich bin der MovieClip : "+this);
  3. trace ("Du kannst mich aber auch "+this._name+" nennen.");
  4. trace ("beschriftet wurde ich mit: "+this.beschriftung.text);
  5. }


..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.
  Mit Zitat antworten
Alt 08-12-2003, 13:18   #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
toggle ist offline   Mit Zitat antworten
Alt 09-12-2003, 09:25   #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)
toggle ist offline   Mit Zitat antworten
Alt 09-12-2003, 09:37   #14 (permalink)
HAY
Neuer User
 
Benutzerbild von HAY
 
Registriert seit: Aug 2002
Ort: Faust-Stadt
Beiträge: 2.577
hi
ActionScript:
  1. for (i=0; i<anzahlROWs; i++) {
  2.     var mc = _root.attachMovie("MButt_mc", "m"+i, i);
  3.     mc._x = startx;
  4.     mc._y = starty+i*(mc._height+3);
  5.     mc.beschriftung.text = this.firstChild.childNodes[i+3].childNodes[0].firstChild;
  6.     mc.id=i
  7.     mc.onRelease = function() {
  8.         _root.seite = "ok für Seite: "+this.id;
  9.     };
  10.    
  11. }
__________________
gruß Harry
HAY ist offline   Mit Zitat antworten
Alt 09-12-2003, 09:55   #15 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Beiträge: 109
hallo hay,

leider immer noch das gleiche problem
toggle 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 22:34 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele