Zurück   Flashforum > Flash > ActionScript > ActionScript 2

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 21-12-2011, 14:30   #1 (permalink)
Neuer User
 
Benutzerbild von chrisflasher
 
Registriert seit: Mar 2008
Beiträge: 98
Steuerung / bestimmte Frames eines MCs / abspielen & stoppen ?

Hallo

ich habe mir eine Figur (Instanzname "hero) in Flash gebastelt und ihr in einem Movieclip eine Laufanimation verpasst.

In Frame 1 steht die Figur. In Frame 1 habe ich ein stop(); gesetzt, damit die Figur nur läuft, wenn die rechte Pfeiltaste gedrückt wird. Nach jedem vierten Frame erfolgt eine neue Bewegung (5, 9, 13, 17, 21, 25, 29, 33), somit besteht die eigentliche Laufanimation aus 8 verschiedenen Bildern.

Nun habe ich folgenden Code auf die Hauptbühne eingefügt:

Code:
hero.onEnterFrame=function() {
if(Key.isDown(Key.RIGHT)) { 
this.play();
}
}
Durch drücken der rechten Pfeiltaste wird die Animation von dem MC mit dem Instanznamen "hero" bis 33 abgespielt und endet wieder bei Frame 1.

Hierzu habe ich 2 Fragen um meine Figur mit einer ordentliche Steuerung auszustatten:

Frage 1:
Kann ich den Code so schreiben, das bei gedrückter Pfeiltaste laufend Frame 5-33 abgespielt werden? Das Problem ist das meine Figur immer wieder zum stehen kommt, da der Movieclip nach einem Durchlauf wieder bei Frame 1 stehen bleibt.

Frage 2:
Gibt es eine einfache Möglichkeit das meine Figur wieder zu Frame 1 zurück kehrt wenn ich die Pfeiltaste loslasse? Die Figur soll stehen bleiben wenn man die Pfeiltaste nicht mehr gedrückt hält.

Über Antworten würde ich mich sehr freuen
__________________
Actionscript bringt mich eines Tages noch um ^^
chrisflasher ist offline   Mit Zitat antworten
Alt 21-12-2011, 15:58   #2 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.495
Hi,

also da gibt es Möglichkeiten ohne Ende. Kommt dann auf die Details an, was am günstigsten ist. Ein einfaches Bsp. wäre folgendes. (da kannst du die gedoppelten frames rauswerfen - andernfalls stell animationWalk_animationSpeed auf 1 )

PHP-Code:
hero.animation_direction 0;
hero.animationWalk_speed 2;
hero.animationWalk_animationSpeed .2;
hero.animationWalk_currentFrame 0;
hero.animationWalk_startFrame 2;
hero.animationWalk_endFrame hero._totalframes;
hero.animationWalk_frameDuration hero.animationWalk_endFrame hero.animationWalk_startFrame+1;

hero.onEnterFrame=function() {
    if(( 
Key.isDown(Key.LEFT) && !Key.isDown(Key.RIGHT) ) ||
       (!
Key.isDown(Key.LEFT) &&  Key.isDown(Key.RIGHT) ) ) { 
        
hero.animation_direction Key.isDown(Key.RIGHT) ? : -1;
        
hero._xscale 100 hero.animation_direction;
        
hero._x += hero.animationWalk_speed hero.animation_direction;
    }

    if(
hero.animation_direction != 0){
        
hero.animationWalk_currentFrame += hero.animationWalk_animationSpeed;
        
hero.animationWalk_currentFrame %= hero.animationWalk_frameDuration;
        
        if( 
hero.animationWalk_currentFrame <= hero.animationWalk_animationSpeed &&
              !(( 
Key.isDown(Key.LEFT) && !Key.isDown(Key.RIGHT) ) ||
                (!
Key.isDown(Key.LEFT) &&  Key.isDown(Key.RIGHT) )) ){
            
hero.animation_direction 0;
            
hero.gotoAndStop(1);
        }else{
            
this.gotoAndStopMath.floor(Math.max(hero.animationWalk_startFramehero.animationWalk_startFrame hero.animationWalk_currentFrame)) );
        }
    }

mfg

sx
__________________

flintfabrik.de

Geändert von shin10 (21-12-2011 um 16:00 Uhr)
shin10 ist offline   Mit Zitat antworten
Alt 21-12-2011, 16:10   #3 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.495
Sorry - hab gerade gesehen, die Animation soll ja auch gleich stoppen
PHP-Code:
hero.animation_direction 0;
hero.animationWalk_speed 2;
hero.animationWalk_animationSpeed .2;
hero.animationWalk_currentFrame 0;
hero.animationWalk_startFrame 2;
hero.animationWalk_endFrame hero._totalframes;
hero.animationWalk_frameDuration hero.animationWalk_endFrame hero.animationWalk_startFrame+1;

hero.onEnterFrame=function() {
    if(( 
Key.isDown(Key.LEFT) && !Key.isDown(Key.RIGHT) ) ||
       (!
Key.isDown(Key.LEFT) &&  Key.isDown(Key.RIGHT) ) ) { 
        
hero.animation_direction Key.isDown(Key.RIGHT) ? : -1;
        
hero._xscale 100 hero.animation_direction;
        
hero._x += hero.animationWalk_speed hero.animation_direction;
    }else{
        
hero.animation_direction 0;
        
hero.animationWalk_currentFrame 0;
        
this.gotoAndStop(1);
    }

    if(
hero.animation_direction != 0){
        
hero.animationWalk_currentFrame += hero.animationWalk_animationSpeed;
        
hero.animationWalk_currentFrame %= hero.animationWalk_frameDuration;    
        
this.gotoAndStopMath.floor(Math.max(hero.animationWalk_startFramehero.animationWalk_startFrame hero.animationWalk_currentFrame)) );
    }

__________________

flintfabrik.de

Geändert von shin10 (21-12-2011 um 16:11 Uhr)
shin10 ist offline   Mit Zitat antworten
Alt 22-12-2011, 11:38   #4 (permalink)
Neuer User
 
Benutzerbild von chrisflasher
 
Registriert seit: Mar 2008
Beiträge: 98
Vielen DANK, funktioniert bestens

Ich habe die Funktionen leider nicht richtig verstanden und würde mich über eine Erläuterung freuen

PHP-Code:
hero.animation_direction 0// in welche Richtung sich die Animation bewegt
hero.animationWalk_speed 5// Laufgeschwindigkeit der Animation
hero.animationWalk_animationSpeed 1// so schnell soll die Animation ablaufen
hero.animationWalk_currentFrame 0;  // Standard Frame ist 0 ?
hero.animationWalk_startFrame 4// ab dann (Frame) soll Animation starten
hero.animationWalk_endFrame hero._totalframes// ?
hero.animationWalk_frameDuration hero.animationWalk_endFrame hero.animationWalk_startFrame+1// ?

hero.onEnterFrame=function() {                                           // Funktion
    
if(( Key.isDown(Key.LEFT) && !Key.isDown(Key.RIGHT) ) ||             // wofür "!" und "||" ? (wenn linke oder rechte Pfeiltaste gedrückt wird)
       
(!Key.isDown(Key.LEFT) &&  Key.isDown(Key.RIGHT) ) ) {            // wofür "!"            (wenn linke oder rechte Pfeiltaste gedrückt wird)
        
hero.animation_direction Key.isDown(Key.RIGHT) ? : -1;       // Wofür "? 1 : -1;"  (Richtung wird bestimmt)
        
hero._xscale 100 hero.animation_direction;                  // hero wird gespiegelt
        
hero._x += hero.animationWalk_speed hero.animation_direction// hero wird auf x Achse mit Speedangabe bewegt
    
}else{                                                              // ansonsten
        
hero.animation_direction 0;                                   // Richtung auf null
        
hero.animationWalk_currentFrame 0;                            // Ausgangsposition
        
this.gotoAndStop(1);                                            // Figur kommt zum stehen (Frame1)
    
}

    if(
hero.animation_direction != 0){                                    // wofür "!" ? (wenn direction = 0 ist dann)
        
hero.animationWalk_currentFrame += hero.animationWalk_animationSpeed;  //?
        
hero.animationWalk_currentFrame %= hero.animationWalk_frameDuration;   // ?  
        
this.gotoAndStopMath.floor(Math.max(hero.animationWalk_startFramehero.animationWalk_startFrame hero.animationWalk_currentFrame)) ); // ?
    
}

__________________
Actionscript bringt mich eines Tages noch um ^^
chrisflasher ist offline   Mit Zitat antworten
Alt 22-12-2011, 12:13   #5 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.495
Zitat:
Zitat von chrisflasher Beitrag anzeigen
Vielen DANK, funktioniert bestens

Ich habe die Funktionen leider nicht richtig verstanden und würde mich über eine Erläuterung freuen
PHP-Code:
hero.animation_direction 0// in welche Richtung sich die Animation bewegt
hero.animationWalk_speed 5// Laufgeschwindigkeit der Animation / zurückgelegte Pixel je Frame
hero.animationWalk_animationSpeed 1// so schnell soll die Animation ablaufen
hero.animationWalk_currentFrame 0;  // aktuelles Frame der Animation (ausgehend von animationWalk_startFrame)
hero.animationWalk_startFrame 4// ab dann (Frame) soll Animation starten
hero.animationWalk_endFrame hero._totalframes// da hört die Animation auf (könnte ja sein, dass danach noch mehr kommen; Ducken, Springen etc.)
hero.animationWalk_frameDuration hero.animationWalk_endFrame hero.animationWalk_startFrame+1// wie lang die Animation ist (um es nicht immer wieder ausrechnen zu müssen)

hero.onEnterFrame=function() {                                           // Funktion
    
if(( Key.isDown(Key.LEFT) && !Key.isDown(Key.RIGHT) ) ||             // IST links UND NICHT(!) rechts; ODER"||"
       
(!Key.isDown(Key.LEFT) &&  Key.isDown(Key.RIGHT) ) ) {            // IST NICHT links ABER rechts (denn die Figur soll nicht laufen, wenn man beides drückt)
        
hero.animation_direction Key.isDown(Key.RIGHT) ? : -1;       // Kurzschreibweise für IF(?) THEN (:) ELSE;"  (Richtung wird bestimmt)
        
hero._xscale 100 hero.animation_direction;                  // hero wird gespiegelt
        
hero._x += hero.animationWalk_speed hero.animation_direction// hero wird auf x Achse mit Speedangabe bewegt
    
}else{                                                              // ansonsten
        
hero.animation_direction 0;                                   // Richtung auf 0
        
hero.animationWalk_currentFrame 0;                            // Ausgangsposition
        
this.gotoAndStop(1);                                            // Figur kommt zum stehen (Frame1)
    
}

    if(
hero.animation_direction != 0){                                    // wenn Richtung ungleich 0, dann läuft er
        
hero.animationWalk_currentFrame += hero.animationWalk_animationSpeed;  // aktueller Bildindex wird erhöht
        
hero.animationWalk_currentFrame %= hero.animationWalk_frameDuration;   // Modulo(%) teilt duch die zweite Zahl und gibt nur den Rest zurück (wenn das aktuelle Bild also größer ist als die Länge der Animation, dann kommt man so in der Animation wieder vorne an) 
        
this.gotoAndStopMath.floor(hero.animationWalk_startFrame hero.animationWalk_currentFrame) ); // springt auf das gewünschte Bild in der Animation; dazu wird gerundet (das Math.max war wohl unnötig; hab es mal raus)
    
}

__________________

flintfabrik.de
shin10 ist offline   Mit Zitat antworten
Alt 22-12-2011, 12:19   #6 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.495
PHP-Code:
 if(  Key.isDown(Key.LEFT) && !Key.isDown(Key.RIGHT) )
//ist das selbe wie
if(  Key.isDown(Key.LEFT) == true && Key.isDown(Key.RIGHT) == false
PHP-Code:
hero.animation_direction Key.isDown(Key.RIGHT) ? : -1
//ist das selbe wie
if(Key.isDown(Key.RIGHT)){
    
hero.animation_direction =  1
}else{
    
hero.animation_direction = -1

__________________

flintfabrik.de
shin10 ist offline   Mit Zitat antworten
Alt 22-12-2011, 14:13   #7 (permalink)
Neuer User
 
Benutzerbild von chrisflasher
 
Registriert seit: Mar 2008
Beiträge: 98
und nochmal danke

PHP-Code:
hero.animationWalk_endFrame hero._totalframes// da hört die Animation auf (könnte ja sein, dass danach noch mehr kommen; Ducken, Springen etc.) 
Genau hier mache ich einen Gedankenfehler. "hero" ist ein Movieclip, dieser beinhaltet 35 Frames. Was mache ich wenn meine Animation jetzt beispielsweise über die 35 Frames hinausgeht, also wenn ich bei Frame 36 meinen Helden mit einer geduckten Haltung zeichne? Wenn ich die Figur mit den Pfeiltasten bewege wird in der Laufanimation die geduckte Haltung (Frame 36) auch angezeigt.
__________________
Actionscript bringt mich eines Tages noch um ^^
chrisflasher ist offline   Mit Zitat antworten
Alt 22-12-2011, 15:00   #8 (permalink)
+ Zimt & Zucker
 
Registriert seit: Mar 2006
Ort: hinterm Mond gleich links
Beiträge: 2.040
Warum nicht die einzelnen Zustandsanimationen in jeweils einen MovieClip packen?
Dann kannst du jeweils einen auf einen frame des containers packen, wobei nun ein einzelner solcher Frame einen Zustand repräsentiert?
Du könntest auch die einzelnen Zustandsanimationsclips dem Helden hinzufügen und entfernen, wodurch der Held nur noch einen frame benötigt.
__________________
anbei Grüße vom milchreis: Viva la [Silb]
"Selbst wenn uns nur noch der Zynismus treibt, wir werden trotzdem einfach immer weiter gehen!"

[Von null auf Flash in einem Klick.] <<< klick
milchreis ist offline   Mit Zitat antworten
Alt 22-12-2011, 15:10   #9 (permalink)
Neuer User
 
Benutzerbild von chrisflasher
 
Registriert seit: Mar 2008
Beiträge: 98
Uff, dann komme ich leider nicht mehr mit dem Code zurecht. Gibt es denn eine Möglichkeit in meinem bereits erstellten MC eine weitere Animation bzw. ein Bild einzufügen und den Code so anzupassen das er beim drücken der rechten und linken Pfeiltaste nur Frame 1-35 abspielt und beim drücken der unten Pfeiltaste Frame 36 abspielt?
__________________
Actionscript bringt mich eines Tages noch um ^^
chrisflasher ist offline   Mit Zitat antworten
Alt 22-12-2011, 16:08   #10 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.495
PHP-Code:
hero.animationWalk_endFrame 35
und dann noch etwas code für das Ducken
__________________

flintfabrik.de

Geändert von shin10 (22-12-2011 um 16:09 Uhr)
shin10 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bestimmte Frames abspielen seville ActionScript 3 6 17-11-2008 17:36
bestimmte Frames/Bilder eines MCs spielen?? Souldelivery ActionScript 1 4 09-06-2005 17:55
fla für bestimmte zeit stoppen nky Flash 4 und Flash 5 5 27-12-2001 22:01
Bestimmte frames abspielen schlendermann Flash 4 und Flash 5 8 07-12-2001 13:23
frames abspielen und dann stoppen aber nicht hinspringen dr.pug ActionScript 1 21 13-09-2001 17:24


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:38 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele