Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 19-05-2006, 19:49   #1 (permalink)
Neuer User
 
Registriert seit: Apr 2006
Beiträge: 40
Movieclip bis Frame abspielen, dann stoppen?

Vielleicht ne einfache Frage, aber ich komm im Moment nicht drauf...

Ich hab ein Quiz-Spiel in Flash MX erstellt. Am Ende wird das Ergebnis, welches zwischen 1 und 4 liegt, in einer Variable abgespeichert.

Um das noch in einem Diagramm anzeigen zu lassen, habe ich einen Movieclip mit 40 Frames angelegt, wo der Balken als Formtween animiert wurde.
In einer extra-Ebene hab ich nun jedem Frame mittels leerem Schlüsselbild einen Bezeichner zugewiesen...stop(); am Ende ist auch eingefügt.

Nehmen wir jetzt mal an, das Ergebnis wäre 2.5:

Wie kann ich den MC bis zum Bezeichner, der für "2.5" steht, abspielen und schließlich anhalten lassen?

Danke für Eure Hilfe.
Dr.Dangerous ist offline   Mit Zitat antworten
Alt 19-05-2006, 22:39   #2 (permalink)
¿
 
Registriert seit: Sep 2005
Beiträge: 86
Hallo,

mit folgendem Code sollte es funktionieren:

PHP-Code:
endFrame 10;
intervalID setInterval(raiseFrame40); //ms = 1000/fps
                                                  
function raiseFrame() {
    
    if( 
mc._currentframe <= endFrame ){
        
mc.gotoAndStop(mc._currentframe 1);
        
updateAfterEvent();
    } else {
        
clearInterval(intervallID);
    }

In diesem Beispiel wird der MC mit dem Balken bis einschließlich dem 10. Frame abgespielt.

Geändert von o-nyx (19-05-2006 um 22:42 Uhr)
o-nyx ist offline   Mit Zitat antworten
Alt 20-05-2006, 08:16   #3 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
Warum nicht einfach
gotoAndStop(25);
??
sebastian ist offline   Mit Zitat antworten
Alt 20-05-2006, 08:47   #4 (permalink)
¿
 
Registriert seit: Sep 2005
Beiträge: 86
Weil gotoAndStop() zum angegebenen Frame springt und nicht bis dorthin abspielt.
o-nyx ist offline   Mit Zitat antworten
Alt 20-05-2006, 08:48   #5 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
aso jo
sebastian ist offline   Mit Zitat antworten
Alt 20-05-2006, 15:49   #6 (permalink)
Neuer User
 
Registriert seit: Apr 2006
Beiträge: 40
Ich danke Dir, ich habs gerade eingesetzt und es hat natürlich funktioniert.

Ich bin nur noch bisschen verwirrt, was das "// ms = 1000/fps" bedeuten soll?
Kannst Du mich dan noch einmal aufklären?
Dr.Dangerous ist offline   Mit Zitat antworten
Alt 20-05-2006, 15:50   #7 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
Milisekunden = 1000/Frames pro Sekunde

ist eine Formel
sebastian ist offline   Mit Zitat antworten
Alt 20-05-2006, 16:40   #8 (permalink)
Neuer User
 
Registriert seit: Apr 2006
Beiträge: 40
Könnte ich es auch für 25 Bilder/Frames pro Sekunde machen ???
Kann ich das Intervall per Mausklick auf eine Schaltfläche für Neustart wieder zurücksetzen oder löschen? Wenn ja, wie funktioniert es?

Bei meinem Spiel (25Bilder/s) klappts beim ersten Durchgang, bei einem Neustart (zweiter Versuch) fängt das Spiel an rumzuzicken? Könnt Ihr nochmal helfen?

Danke.

Geändert von Dr.Dangerous (20-05-2006 um 16:50 Uhr)
Dr.Dangerous ist offline   Mit Zitat antworten
Alt 20-05-2006, 16:47   #9 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
omgf das ist ne formel..
das bedeutet nicht du brauchst 1000 fps, sondern du kannst mit dieser formel rechnen.. oder let it be und lösch den kommentar aus deinem script...
sebastian ist offline   Mit Zitat antworten
Alt 21-05-2006, 09:19   #10 (permalink)
¿
 
Registriert seit: Sep 2005
Beiträge: 86
Die Funktion setInterval() ruft periodisch die im ersten Argument genannte Funktion auf. Und zwar genau im zeitlichen Abstand vom zweiten Argument (in Millisekunden).

Um nun von der Frames pro Sekunde auf Millisekunden zu kommen teilst du 1000 durch die Framerate. Also für 25 Fps 1000/25, für 10 Fps 1000/10 usw.

Damit die Animation erneut starten kann musst du natürlich zuerst wieder zum 1. Frame springen. Im folgenden Beispiel habe ich das in der onPress Funktion gemacht.

PHP-Code:
endFrame 20

b1.onPress = function() {
    
mc.gotoAndStop(1);
    
intervalID setInterval(raiseFrame40); //ms = 1000/fps 
}
                                                   
function 
raiseFrame() { 
     
    if( 
mc._currentframe <= endFrame ){ 
        
mc.gotoAndStop(mc._currentframe 1); 
        
updateAfterEvent(); 
    } else { 
        
clearInterval(intervalID); 
    } 

PS: In meinem Beispiel weiter oben war ein Tippfehler in der Zeile clearInterval(intervalID);

Geändert von o-nyx (21-05-2006 um 09:31 Uhr)
o-nyx ist offline   Mit Zitat antworten
Alt 21-05-2006, 11:58   #11 (permalink)
Neuer User
 
Registriert seit: Apr 2006
Beiträge: 40
Ok, jetzt leuchtet es mir ein.
Ich habs in die Moveclip-Eigenschaft onEnterFrame eingebaut und alles funktioniert.

Danke nochmal.
Dr.Dangerous 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 23:43 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele