Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 10-01-2006, 15:54   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 60
Probleme mit setInterval

Hallo Leute, ich hab ein kleines Problem mit der setInterval-Funktion. Das Programm soll folgendermaßen laufen: Es erscheinen an einer zufälligen y-Position fünf Bälle auf dem Bildschirm. Alle sollen sich anschließend nach links bewegen. Scheint ja ziemlich einfach zu sein, aber ich will es mit einer for-Schleife machen. Funktioniert auch alles bestens, bloß bewegt die Funktion, die die Bälle bewegen soll, immer nur einen Ball statt alle. Vielleicht weiß einer von euch, was ich falsch mache (bin noch Anfänger). Nachfolgend der Quelltext: Danke schon mal im Voraus.

// Funktion zur Berechnung einer Zufallszahl für die y-Position des Feindballs
feindball_y_pos = function() {
pos = Math.floor(Math.random() * 330) + 1;
return pos;
}
//Funktion zur Bewegung des neu erstellten Balles
//Es wird immer "neuerBall" bewegt, der in der nächsten Funktion erstellt wird

bewegeBall = function() {
eval(neuerBall)._x += -3;
}

// Diese Funktion erzeugt eine Instanz des Movieclips "feindball_mc"
erstelleBall = function() {
var ball = "feindball_mc";
// Es wird bei jedem Durchlauf der Schleife (unten) ein neuer Ball erstellt
// Deshalb das "+i"

neuerBall = "feindball_mc" + i;
attachMovie(ball, neuerBall, i);
eval(neuerBall)._x = 300;
eval(neuerBall)._y = feindball_y_pos();
}

// Beide Funktionen sollen fünf Mal ausgeführt werden, damit fünf Bälle
// erscheinen, die sich alle sofort bewegen.
// Beginn der Schleife

for (i=1; i<=5; i++){
erstelleBall();

// Leider bezieht sich die bewegeBall-Funktion im SetInterval
// immer nur auf den Ball, der zuerst erstellt wurde, obwohl "neuer Ball"
// immer einen neuen Ball benennt. Der erste Ball hat nun einen Affenzahn
// drauf, aber die anderen Bälle bewegen sich überhaupt nicht

var ballBewegerID = setInterval(bewegeBall, 10);
}
// Ende der Schleife
// Dient nur zur Überprüfung, ob alle Bälle erstellt wurden

trace (feindball_mc0);
trace (feindball_mc1);
trace (feindball_mc2);
trace (feindball_mc3);
mellon ist offline   Mit Zitat antworten
Alt 10-01-2006, 16:07   #2 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hallo!
Gehe einfach mal davon aus, dass die Bewegungen später unterschiedlich schnell sein sollen. Deshab bekommt hier jeder MC seinen eigenen Intervall:
PHP-Code:
// Funktion zur Berechnung einer Zufallszahl für die y-Position des Feindballs
feindball_y_pos = function () {
    
pos Math.floor(Math.random()*330)+1;
    return 
pos;
};
//Funktion zur Bewegung des neu erstellten Balles
//Es wird immer "neuerBall" bewegt, der in der nächsten Funktion erstellt wird
bewegeBall = function (mc) {
    
mc._x += -3;
    if (
mc._x<0) {
        
clearInterval(mc.iv);
    }
};
// Diese Funktion erzeugt eine Instanz des Movieclips "feindball_mc"
erstelleBall = function () {
    var 
ball "feindball_mc";
    
// Es wird bei jedem Durchlauf der Schleife (unten) ein neuer Ball erstellt
    // Deshalb das "+i"
    
neuerBall "feindball_mc"+i;
    
attachMovie(ballneuerBalli);
    eval(
neuerBall)._x 300;
    eval(
neuerBall)._y feindball_y_pos();
};
// Beide Funktionen sollen fünf Mal ausgeführt werden, damit fünf Bälle
// erscheinen, die sich alle sofort bewegen.
// Beginn der Schleife
for (i=1i<=5i++) {
    
erstelleBall();
    
// Leider bezieht sich die bewegeBall-Funktion im SetInterval 
    // immer nur auf den Ball, der zuerst erstellt wurde, obwohl "neuer Ball" 
    // immer einen neuen Ball benennt. Der erste Ball hat nun einen Affenzahn
    // drauf, aber die anderen Bälle bewegen sich überhaupt nicht
    
this[neuerBall].iv setInterval(bewegeBallrandom(100), this[neuerBall]);
}
// Ende der Schleife
// Dient nur zur Überprüfung, ob alle Bälle erstellt wurden 
Im Beispiel mal "random (100)" reingesetzt, damit du den Unterschied siehst.
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager 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 02:52 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele