setIntervall statt onEnterFrame ?!

loup

Mitglied
Hi,

Meine onEnterFrame ist mir viel zu schnell (31 fps)

MovieClip.prototype.controllPrint = function() {
var i = 0;
this.onEnterFrame = function() {
if (i<anzahlP[+neueNr]) {
alles["alles_"+neueNr].allesCont["porto_"+i].slideXY(abstandA*i, 600, .2, .1);
}
i++;
};
};

Wie kann ich ein delay einbauen, sodass i++ alle 1sec (1000) aufgerufen wird?
Hab schon einiges ausprobiert (setInterval) und bin zu keinem Ergebniss gekommen.

Würd mich freuen, ein paar Tipps zu bekommen!

lg
loup
 
So würde die Funktion mit SetInterval aussehen:
PHP:
var i = 0;
function controllPrint ()
{
	clearInterval ( CP )
	if (i<anzahlP[+neueNr]) 
	{
		alles["alles_"+neueNr].allesCont["porto_"+i].slideXY(abstandA*i, 600, .2, .1);
		CP = setInterval ( this, "controllPrint", 1000 )
	}
	i++;	
}
Der Aufruf "CP = setInterval ( this, "controllPrint", 1000 ) " kann auch hinter das i++, allerdings hast du dann keine Abruchbedingung.
So wie es oben steht, wird die Funktion nur neu aufgerufen wenn "i<anzahlP[+neueNr]" erfüllt ist.

So nebenbei führt ein MovieClip.prototype dazu,
dass alle Objekte vom Typ MovieClip dieses Verhalten haben.
Falls du also 10 MovieClips hast, dann zählen 10 MovieClips jeweils ihr eigenes i hoch...
 
Hi,

PHP:
MovieClip.prototype.controllPrint = function() {
    var i = 0;
    var c = 0; // Zähler
    this.onEnterFrame = function() {
        c++;
        if (c > 30) {
            if (i<anzahlP[+neueNr]) {
                alles["alles_"+neueNr].allesCont["porto_"+i].slideXY(abstandA*i, 600, .2, .1);
            }
            c = 0;
        }
        i++;
    }
}
So wird Deine Aktion z.B. nur alle 30 Frameaufrufe ausgeführt.

Mit einem Intervall geht es natürlich auch:
PHP:
MovieClip.prototype.controllPrint = function() {
    clearInterval(this.iv);
    this.zaehler = 0;
    this.iv = setInterval(function() { tu_es(); }, 1000);
}

MovieClip.prototype.tu_es = function() {
    this.zaehler ++;
    if (this.zaehler < anzahlP[+neueNr]) {
        alles["alles_"+neueNr].allesCont["porto_" + this.zaehler].slideXY(abstandA * this.zaehler, 600, .2, .1);
    }
}

Gruß

EDIT: Bah, zu spät ^^
.
 
Dank an Euch beiden

Klappt, allerdings muss ich beim (DATIC script) denn zaehler auf
-1 setzten, sonst lässt er mir den denn ersten im array ( 0 ) aus.

Auf alle Fälle -> es


lg
loup
 
Du kannst auch einfach das "this.zaehler ++; " hinter die if-Abfrage stellen.
Dann fängt er wie es sich gehört mit 0 an.

Das mit MovieClip-Prototype was ich erzählt habe ist so nebenbei Blödsinn, da du ja auf jedem MovieClip die Funktion controllPrint bzw tu_es definierst und die dann auch nur ausgeführt wird wenn man sie auch aufruft.
 
Zurück