Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 10-03-2005, 08:05   #1 (permalink)
media artist
 
Benutzerbild von amadeus
 
Registriert seit: Jul 2001
Beiträge: 181
Dynamische buttons Beschriftung und Ziel

Um Buttons eines Menüs zu beschriften und deren Ziel zu bestimmen habe ich folgendes Script gebastelt. Bis zur Beschriftung funktioniert alles prächtig! Das mit dem Ziel (getUrl) noch nicht so. Kann ich ein Movieclipereignis nicht so in einer Schleife dynamisch generieren?

ActionScript:
  1. var buttons = new Array("startseite", "programm", "galerie", "djs", "logbuch", "links");
  2. var links = new Array("st", "pr", "ga", "dj", "lo", "li");
  3. var anzahl = 6;
  4. for (i=0; i<=anzahl; i++) {
  5.     IN_menue["IN_button"+i].IN_button.TX_button.text = buttons[i-1];
  6.     IN_menue["IN_button"+i].onRelease = function() {
  7.     getURL("index.php?nav="+links[i]);
  8.     };
  9. }
amadeus ist offline   Mit Zitat antworten
Alt 10-03-2005, 08:40   #2 (permalink)
New User();
 
Registriert seit: Jan 2003
Beiträge: 85
Wahrscheinlich liegt es daran, dass du die Arrays als superlokal deklariert hast. Lass das zuvorstehende "var" mal weg. Superlokale Variablen/Arrays darfst du auch nur innerhalb von Funktionen, Methoden oder Schleifen einsetzen, also eingeschlossen in "{ ... }".

Zusätzlich liegt die Variable i, auf die du in der onRelease dich beziehst

ActionScript:
  1. "index.php?nav="+links[i]

wahrscheinlich nicht in dem MC, dem die onRelease Methode zugeordnet ist (In_Menue["IN_button"+i]).

Lösung: Du holst dir in der onRelease Methode einfach die i-Variable neu:

ActionScript:
  1. IN_menue["IN_button"+i].onRelease = function() {
  2.     i = _root.meinMC.i; // meinMC = Pfad, in dem die [I]for-Schleife[/I] Liegt
  3.     getURL("index.php?nav="+links[i]);
  4.     };

ActionScript:
  1. buttons = new Array("startseite", "programm", "galerie", "djs", "logbuch", "links");
  2. links = new Array("st", "pr", "ga", "dj", "lo", "li");
  3. anzahl = 6;
  4. for (i=0; i<=anzahl; i++) {
  5.     IN_menue["IN_button"+i].IN_button.TX_button.text = buttons[i-1];
  6.     IN_menue["IN_button"+i].onRelease = function() {
  7.     i = _root.meinMC.i; // meinMC = Pfad, in dem die [I]for-Schleife[/I] Liegt
  8.     getURL("index.php?nav="+links[i]);
  9.     };
  10. }

Geändert von Bossman2K (10-03-2005 um 08:44 Uhr)
Bossman2K ist offline   Mit Zitat antworten
Alt 10-03-2005, 10:14   #3 (permalink)
media artist
 
Benutzerbild von amadeus
 
Registriert seit: Jul 2001
Beiträge: 181
Ich habs genauso probiert:

ActionScript:
  1. buttons = new Array("startseite", "programm", "galerie", "djs", "logbuch", "links");
  2. links = new Array("st", "pr", "ga", "dj", "lo", "li");
  3. anzahl = 6;
  4. for (i=0; i<=anzahl; i++) {
  5.     IN_menue["IN_button"+i].IN_button.TX_button.text = buttons[i-1];
  6.     IN_menue["IN_button"+i].onRelease = function() {
  7.     i = _root.i;
  8.     getURL("index.php?nav="+links[i]);
  9.     };
  10. }

aber es funktioniert nicht! (i liegt in _root)
Woran kann es noch liegen?
amadeus ist offline   Mit Zitat antworten
Alt 10-03-2005, 10:27   #4 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Hab jetzt nur mal Deine for-Schleife korigiert.
Dürfte vielleicht sogar klappen .
PHP-Code:
var buttons = new Array;( "startseite""programm""galerie""djs""logbuch""links" ); 
var 
links = new Array( "st""pr""ga""dj""lo""li" ); 
for ( var 
1<= buttons.lengthi++ )

    
IN_menue"IN_button" ].IN_button.TX_button.text buttons]; 
    
IN_menue"IN_button" ].1;
    
IN_menue"IN_button" ].onRelease = function()
    { 
        
getURL"index.php?nav=" linksthis.] ); 
    }; 

__________________
ERROR: Signature is too large

Geändert von rendner[i] (10-03-2005 um 10:30 Uhr)
rendner[i] ist offline   Mit Zitat antworten
Alt 10-03-2005, 10:39   #5 (permalink)
media artist
 
Benutzerbild von amadeus
 
Registriert seit: Jul 2001
Beiträge: 181
ne sorry das klappt auch nicht! Da funzt es sogar nicht mehr mit der Beschriftung! Interessant ist aber folgendes: Wenn ich hier trace...

ActionScript:
  1. buttons = new Array("startseite", "programm", "galerie", "djs", "logbuch", "links");
  2. links = new Array("st", "pr", "ga", "dj", "lo", "li");
  3. anzahl = 6;
  4. for (i=0; i<=anzahl; i++) {
  5.     IN_menue["IN_button"+i].IN_button.TX_button.text = buttons[i-1];
  6.     IN_menue["IN_button"+i].onRollOver = function() {
  7.         z=_root.i;
  8.         trace(z);
  9.     };
  10. }

erhalte ich beim Rollover immer 7. Warum verändert sich diese Zahl nicht wenn ich über die verschiedenen Buttons fahre? Das müßte doch eigentlich klappen? Ich checks nicht!
amadeus ist offline   Mit Zitat antworten
Alt 10-03-2005, 11:36   #6 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Kleiner Fehler von mir in dem Script.
Deins Script ist falsch, weil erstens:
PHP-Code:
for (i=0i<=anzahli++) { 
    
IN_menue["IN_button"+i].IN_button.TX_button.text buttons[i-1]; 
Du bei i = 0 anfängst und en ersten Button mit den inhalt von buttons[ -1 ]
beschrifteset, dies geht nicht, weil ein Array immer mit 0 beginnt und nicht -1.

Zweitens:
PHP-Code:
IN_menue["IN_button"+i].onRollOver = function() { 
        
z=_root.i
Sagst Du ja hier das der Button ja die Variable _root.i ausgeben soll, und die ist nun mal 7, Du willst aber eigentlich den i-Wert ausgeben den i hatte wo der jenige Button erstellt wurde, somit ist das auch falsch.

So hier der korrigierte:
PHP-Code:
var buttons = new Array;( "startseite""programm""galerie""djs""logbuch""links" ); 
var 
links = new Array( "st""pr""ga""dj""lo""li" ); 
var 
anzahl 6;
for ( var 
1<= anzahli++ ) 

    
IN_menue"IN_button" ].IN_button.TX_button.text buttons]; 
    
IN_menue"IN_button" ].1
    
IN_menue"IN_button" ].onRelease = function() 
    { 
        
getURL"index.php?nav=" linksthis.] ); 
    }; 

__________________
ERROR: Signature is too large

Geändert von rendner[i] (10-03-2005 um 12:19 Uhr)
rendner[i] 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 04:59 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele