Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 17-05-2007, 17:39   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 102
Variable in for-Schleife

Hallo,
ich habe folgenden Code, der pro Durchlauf einer Schleife einen MovieClip namens img(Nummer)_btn erzeugt und ihm Eigenschaften zuweist:
PHP-Code:
anz 3;
for (
0anzi++) {
    
i;
     
thumbnails.attachMovie("Thumbnail""img" "_btn"i, {_x:(35+57), _y:160onRelease:function() {nextPic(a)}});

Eine der Eigenschaften ist eine onRelease-Eigenschaft. Wenn der Film nun gestartet hat und die Buttons erzeugt wurden, so wird die Funktion nextPic() immer wird dem Wert "2" aufgreufen, egal welchen Button ich anklicke. Scheinbar haben also alle Buttons als onRelease-Event

"nextPic(a)"

erhalten.
Da "a" am Ende der Schleife jedoch "2" ist, rufen alle Buttons also das gleiche Bild auf.

Wie muss ich vorgehen, damit jeder Button "sein" Bild öffnet. Also img0_btn die Funktion nextPic() mit "0" aufruft und img2_btn mit "1" usw.

Über Hilfe wäre ich sehr dankbar!

Björn
Björn L. ist offline   Mit Zitat antworten
Alt 17-05-2007, 17:54   #2 (permalink)
Pending…
 
Benutzerbild von psyk
 
Registriert seit: Jul 2002
Ort: Hamburg
Beiträge: 3.866
Hier mal etwas sauberer aufgedröselt.
PHP-Code:
var anz 3;
for ( var 
0anzi++ )
{
   var 
i;
   var 
mc thumbnails.attachMovie("Thumbnail""img" "_btn"i, {_x:(35+i57), _y:160} );
   
mc.ID;
   
mc.onRelease:function() 
   {
      
nextPic(this.ID);
   }

__________________
:: Warum einfach, wenn's auch kompliziert geht! ::
psyk ist offline   Mit Zitat antworten
Alt 17-05-2007, 18:03   #3 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 102
Hallo,
danke für die schnelle Antwort, aber Deine "Aufdröselung" scheint Fehler zu enthalten:
onRelease:function muss in Deiner Version onRelease = function heißen:

PHP-Code:
var anz 3
for ( var 
0anzi++ ) 

   var 
i
   var 
mc thumbnails.attachMovie("Thumbnail""img" "_btn"i, {_x:(35+i57), _y:160} ); 
   
mc.ID
   
mc.onRelease = function()  
   { 
      
nextPic(this.ID); 
   } 

Mein Code gibt mir am Ende noch den Wert aus, den die Funktion nextPic() erhält. In Deinem Bsp. erhält sie "undefined".
Kannst Du mir das nochmals erklären?
Björn L. ist offline   Mit Zitat antworten
Alt 17-05-2007, 18:12   #4 (permalink)
Pending…
 
Benutzerbild von psyk
 
Registriert seit: Jul 2002
Ort: Hamburg
Beiträge: 3.866
Sorry für den Doppelpunkt.
Woher soll ich wissen was in deiner nextPic Funktion passiert,
bin ja nicht Orie Gellar.
__________________
:: Warum einfach, wenn's auch kompliziert geht! ::
psyk ist offline   Mit Zitat antworten
Alt 17-05-2007, 18:25   #5 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 102
Zitat:
Zitat von psyk Beitrag anzeigen
Sorry für den Doppelpunkt.
Woher soll ich wissen was in deiner nextPic Funktion passiert,
bin ja nicht Orie Gellar.
Hallo,
so war das ja auch nicht gemeint! Ich wollte sagen, dass der funktion nextPic() einfach keine Variable übergeben wird.
Du schreibst:

nextPic(this.ID);

Nur was ist this.ID ?

Danke

Björn
Björn L. ist offline   Mit Zitat antworten
Alt 17-05-2007, 18:32   #6 (permalink)
Pending…
 
Benutzerbild von psyk
 
Registriert seit: Jul 2002
Ort: Hamburg
Beiträge: 3.866
Cool Upps

Da hat sich noch ein Fehler eingeschlichen (war ja klar).
PHP-Code:
var anz 3;
for ( var 
0anzi++ )
{
   var 
i;
   var 
mc thumbnails.attachMovie("Thumbnail""img" "_btn"i, {_x:(35+i57), _y:160} );
   
mc.ID i// speichert die Index-Nummer aus der Schleife im MC-Object
   
mc.onRelease = function() 
   {
      
nextPicthis.ID ); // <- und ruft sie hier wieder auf.
   
}

__________________
:: Warum einfach, wenn's auch kompliziert geht! ::

Geändert von psyk (17-05-2007 um 18:54 Uhr)
psyk ist offline   Mit Zitat antworten
Alt 17-05-2007, 18:44   #7 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 102
Danke,
jetzt klappt es!
Kanst Du mir auch erklären, warum meine Version nicht funktioniert!

Viele Grüße

Björn
Björn L. ist offline   Mit Zitat antworten
Alt 17-05-2007, 18:53   #8 (permalink)
Pending…
 
Benutzerbild von psyk
 
Registriert seit: Jul 2002
Ort: Hamburg
Beiträge: 3.866
Weil der Event erst nach dem Durchlauf der Schleife aufgerufen wird
und da a eine lokale Variable ist wird diese immer mit dem neuen
Wert von i überschrieben. Deshalb wird immer der letzte Wert
der Schleifen im Event aufgerufen.
__________________
:: Warum einfach, wenn's auch kompliziert geht! ::
psyk 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 09:21 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele