Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-06-2006, 10:49   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 116
Array Problem. Kann verschachtelte Buttons nicht erreichen

Hallo zusammen,

ich habe hier schon im Forum geschaut und leider zum Thema nichts gefunden. Auch in der Flash MX-Hilfe steht eigentlich das, was ich selbst so probiert habe (Jedenfalls die Verknüpfung zwischen Arrayellementzähler und einem String).

Ich benötige folgende Arraystruktur für jedes Element. Diese Liste wird mit der
Zeit anwachsen (statisch).

buttonArray = new Array( );
buttonArray[0] = _root.mc_bilder.mc_1.btn_1;
buttonArray[1] = _root.mc_bilder.mc_2.btn_2;
buttonArray[2] = _root.mc_bilder.mc_3.btn_3;
buttonArray[3] = _root.mc_bilder.mc_4.btn_4;
buttonArray[4] = _root.mc_bilder.mc_5.btn_5;
....
....

Diese Konstruktion schreit ja förmlich nach einer Optimierung , deshalb war mein Versuch so...

buttonArray = new Array( );
buttonArray.length =5;

for(var i=1; i < buttonArray.length; i++) {
buttonArray[i-1] = _root.mc_bilder.["mc_"+i].["btn_"+i];
}

somit wäre ich flexibel und könnte die Länge und Anzahl der Arrays bei buttonArray.length steuern.

Aber leider geht es nicht. Fehlermeldung...

Symbol=mc_buttons, Ebene=buttonArray, Bild=1: Zeile 8: Nach '.'-Operator wurde ein Feld erwartet.
buttonArray[i-1] = _root.mc_bilder.["mc_"+i].["btn_"+i];

....

Wäre super, wenn mir jemand die Lösung hätte.
Ich arbeite mit Flash MX.

Besten Dank im Voraus!
DJ Trancelight

Geändert von trancelight (07-06-2006 um 10:52 Uhr)
trancelight ist offline   Mit Zitat antworten
Alt 07-06-2006, 10:53   #2 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Vor ner eckigen Klammer darf kein Punkt stehen.
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 07-06-2006, 10:55   #3 (permalink)
habs vergessen
 
Benutzerbild von pwdVergesser
 
Registriert seit: Feb 2006
Beiträge: 990
Code:
index01 = new array("1","2","3");
content01 = new array("_root.mc_bilder.mc_1.btn_1","_root.mc_bilder.mc_2.btn_2","_root.mc_bilder.mc_3.btn_3");
output = new array();

for (var i=0; i < index.length; i++) {
      output[index01[i]] = content01[i];
}

trace(output["1"]+output["2"]+output["3"]);
pwd
__________________
Blog/Lab Xing
pwdVergesser ist offline   Mit Zitat antworten
Alt 07-06-2006, 13:06   #4 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 116
@sonar und pwd
Dankeschön für eure schnellen Antworten.

Also so wie ich das gemacht habe geht es nicht? Keine Chance das syntaxtechnisch zu bewältigen?

Die Lösung von pwd ist recht gut, aber erfordert mehr Pflege (2 Arrays) beim Einfügen eines neuen Elements.

Hat jemand noch eine Idee?

Besten Dank für eure Hilfe

bye
trancelight ist offline   Mit Zitat antworten
Alt 07-06-2006, 13:52   #5 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Tag!
Was genau möchtest du denn? Sowas hier:
PHP-Code:
var buttonArray = new Array();
var 
anzahl 5
for(var i=0anzahli++) {
buttonArray.push(_root.mc_bilder["mc_"+i]["btn_"+i]);

__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 07-06-2006, 14:19   #6 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 116
Hallo "Der Frager"

Du, deine Lösung sieht genial aus! Ich glaube das könnte es sein.
Ich probier es heute Abend aus.

Was das Ganze soll:

Ich erstell Buttons, die in einem MC untergebracht sind. Das Ganze soll eine Slideshow später mal werden und die Buttons werden dann mit einem Foto hinterlegt.

Diese Buttons werden mit Hilfe einer Funktion unsichtbar gemacht wobei einer von den Buttons immer sichtbar sein soll. Das ändert sich jedoch immer, so dass ich den Button direkt über AS ansprechen muss.
buttonArray[0]._visible = true;

//buttonArray[0] zeigt auf _root.mc_bilder.mc_1.btn_1
//buttonArray[1] zeigt auf _root.mc_bilder.mc_2.btn_2
//usw.

Momentan habe ich 5 Buttons. Wenn ich nun wieder einen neuen dazubaue, dann muss ich meine Arrayliste um 1 erweitern. Jedoch muss ich dann immer
diese Zeile ergänzen und die Zahlen anpassen.

buttonArray[5] = _root.mc_bilder.mc_6.btn_6;
usw.

mc_6 (MovieClip) und btn_6 (Button) werden von mir statisch erstellt und bekommen mc_6 und btn_6 als Instanzname.

Wenn das mit deiner Lösung klappt, so muss ich nur noch deine Variable "anzahl" erhöhen. Genau so, wie ich es gerne haben möchte.

Wäre super!

Besten Dank schon mal und ich melde mich, sobald ich es ausprobiert habe.

bye

Geändert von trancelight (07-06-2006 um 14:22 Uhr)
trancelight ist offline   Mit Zitat antworten
Alt 07-06-2006, 15:33   #7 (permalink)
Neuer User
 
Registriert seit: Jun 2004
Beiträge: 186
@trancelight

ein Nachtrag vorab:
Ups:
der Frager hatte das ja schon beantwortet... nicht richtig gelesen...

Nun ja, Löschen ist blöde, daher hier die ausführliche Variante von der Frager:

Nachtrag 2:
sehe gerade, vielleicht ist da ja doch was neues drin:
Ich bringe die pusch()-Methode an dem Objekt selbst an,
(oder lasse sie dort anbringen)
Daher brauche ich mir noch nichteinmal über die Pfadangaben Gedanken zu machen.
aus " _root.mc_bilder["mc_"+i]["btn_"+i] " wird dann einfach "this"...

Wenn die Buttons verschieden reagieren sollen, schmeiße ich die Refferenzen der Buttons einfach in mehrere Arrays, die alle für bestimmte Abfragen zuständig sind...

Es bleibt aber das gleiche Prinzip wie vom "Frager"

================================================== ========

Was hälst du von der Methode:
(ist nicht dein Code, weil ich den aus einem anderen Beitrag von mir hier hin kopiert habe... Aber du wirst schon damit zurechtkommen)

Arbeite mit Refferenzen die du in ein Array schmeißt:
PHP-Code:
//_root: 
var myButtons_array = new Array(); 

// deine zig Buttons xyz... 
onClipEvent(load){  //dynamisch:// _level0.Pfadangaben["neuerMC"+i].onLoad = function(){
  // spart viel Denk- und Merkarbeit...  Alle Pfadangaben werden automatisch erzeugt...
    
_root.myButtons_array.push(this);  
  
// falls man verschiedene Reaktionen braucht evtl. noch 
 //  _root.myBesondereButtons_array.push(this);  


// Codebeispiel... wo auch immer du ihn unterbringst 
on(pressreleaserollOverrollOut){ 
   for(var 
0i<_root.myButtons_array.lengthi++){ 
      
_root.myButtons_array[i].tuIrgendEtwas();
// Als Beispiel: bestimmte Buttons ein oder ausblenden:
      
_root.myBesondereButtons_array[i]._visible = ! _root.myBesondereButtons_array[i]._visible 

   } 

Evtl. musst du vorher noch die Länge des Refferenz-Arrays abfragen und in einer Variablen ablegen, um im Code darauf zuzugreifen...

Code:
this.myButtonNr = _root.myButtons_array.length-1;
Ich umgehe dieses meist mit einer Abfrage wie dieser:

PHP-Code:
on(pressreleaserollOverrollOutwasauchimmer){ 
   for(var 
0i<_root.myButtons_array.lengthi++){ 
      if(
_root.myButtons_array[i] == this)                     //  oder ungleich  !!! 
         
_root.myButtons_array[i].tueEtwas();
      }
   }  

kopiert aus folgendem Beitrag:
button verändert die farbe beim klicken. und wie bekomme ich ihn wieder normal?
da stehen von mir noch mehr Komentare...

Vertiefe dich ein wenig da rein, und du kannst dir viel Arbeit ersparen...

Gruß Mjchael

Geändert von mjchael (07-06-2006 um 15:52 Uhr)
mjchael ist offline   Mit Zitat antworten
Alt 08-06-2006, 10:25   #8 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 116
Thumbs up

So Leute, habs nun hinbekommen.

Es läuft jetzt sogar meine Lösung, die im Prinzip sehr nahe an die Lösung vom "Der Frager" rankommt. Ich bin einfach dem Vorschlag von Sonar nachgegangen und habe bei meiner Variante die Punkte weggelassen - also so

von buttonArray[i-1] = _root.mc_bilder.["mc_"+i].["btn_"+i];
zu buttonArray[i-1] = _root.mc_bilder["mc_"+i]["btn_"+i];

und es geht.

@Mjchael

Vielen Dank auch für deine Mühe! Ich werde mir bei Gelegenheit deine Lösung anschauen und auf meine Bedürfnisse umschreiben.

Besten Dank euch allen. Ihr seit wirklich 1A

bye
DJ Trancelight
trancelight 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 11:32 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele