Flash MX | function + setInterval PROBLEM!

cri

Mitglied
Ja Tach Ihr!
Hab mal wieder nen Flash-ActionScript-Problem...
Mit folgendem Script:

Code:
on(release){ 
   onEnterFrame = function(){ 
      swf.nextFrame(); 
      swf2.nextFrame(); 
      setInterval(this, 5000); 
   } 
}


Eine Nebenbei-Frage:
Muss das "this" in "setInterval" überhaupt mit rein, wenn ich die function eh nicht benenne und es gerade in dieser ausführe

Die Hauptfrage:
Das oben stehende Script ist auf einem Button, der nach dem >klick< einen einzuladenen Film ("swf" und "swf2") eigentlich in ZEITLUPE (also einfach bei allen Bildern etwas stehenbleiben) abspielen soll. Das macht er aber nicht. Sondern er spielt es nur normal in einer Endlosschleife ab.
Wie kann ich denn eine Slowmotion in der Art machen?
Gehts überhaupt?
Ich hab bestimmt einen Denkfehler - doch vielleicht könnt ihr mir auch dabei helfen.

DANKE und bitte rettet mir meinen Tag!
der CRI
 
Hi ...

erstmal - das mit dem toppen eines Beitrags kommt hier nicht so an - wir müssen schliesslich auch mal pennen, und soviel ist hier nicht los, als das irgendwas untergehen würde.

Du hast da so etwas in der Art eines rekursiven onEnterFrame Events geschrieben, der glücklicherweise wegen mangelhafter Adressierung nicht funktioniert, weil dir ansonsten dein flashplayer nämlich abstürzen würde...

richtiger geht es folgendermassen:

slowmotion = function(){
swf.nextFrame();
swf2.nextFrame();
}
button.onPress = function(){
setInterval(slowmotion, 5000);
}

dazu musst du nur noch eine clearInterval Bedingung formulieren, die die swfs entweder nach erreichen des letzten Frames zurücksetzt, oder das SPiel von vorne beginnen lässt, oder, oder ..


Grüsse
B
 
SetInterval ist leider in der Flash-Hilfe falsch definiert.

So klappt´s:

PHP:
function sachwas () {
	clearInterval ( SW )
	trace("fupp.");
}

SW = setInterval( _root, "sachwas", 1000);


Wichtig ist, dass der erste Parameter von Setinterval der Pfad zur Funktion ist.
Also sowas wie this, _root oder parent.
Der zweite ist der Funktionsname als String, also mit Anführungszeichen.
Wie Basileus schon sagte braucht ein Setinterval ein clearInterval damit es nicht immer wieder die Funktion aufruft.

Sowas wie Zeitupe könnte man so lösen:

PHP:
function setNextFrame () {
	clearInterval ( NF )
	mc.nextFrame();
	if ( mc._currentframe < mc._totalframes ) NF = setInterVal ( this, "setNextFrame", 300 ) 
}


setNextFrame ()
 
das folgende script klappt schonmal, wenn der button gedrückt wird, aber auch nur am Anfang - sprich: am Anfang des eingeladenen Films wartet der die vorgegebene Zeit, doch dann läuft er ganz normal ab.

Code:
on (release, keyPress "<Enter>" ) {
	playbutton._visible = false;
	function slow(){ 
    	//clearInterval ( SW )
		_parent.swf.play();
		_parent.swf2.play();
	}
SW = setInterval( this, "slow", 1000);
}

Ich hab auch schon diverse logische Mischungen eurer Scripts versucht, aber das klappt dann immernoch nicht.

Und da ich nicht so der Programmiertyp bin, hab ich mir jetzt eine andere einfachere Methode ohne Script überlegt und benutz die jetzt.

WENN ICH DOCH MAL WIEDER EINE SLOWMOTION PER SCRIPT MACHEN WILL, DANN KOMM ICH ZU DIESEM THREAD NOCHMAL ZURÜCK!

Also trotzdem DANKE!
Scheen Abend
der CRI
 
Zurück