Anzeige

[AS3] MC stoppen und Rückwärts-Schleife unterbrechen

[AS3] - MC stoppen und Rückwärts-Schleife unterbrechen | PSD-Tutorials.de

Erstellt von Dimitrj, 20.08.2010.

  1. Dimitrj

    Dimitrj Nicht mehr ganz neu hier

    Dabei seit:
    13.02.2008
    Beiträge:
    115
    Geschlecht:
    männlich
    MC stoppen und Rückwärts-Schleife unterbrechen
    [Gelöst] MC stoppen und Rückwärts-Schleife unterbrechen

    Hi Leute

    Tut mir Leid, ist ne riesen Newbie-Frage, kenne mich in Flash noch kaum aus.

    Ich habe folgendes AS3-Script, das mit bei Mouseover einen Tween abspielt und ihn bei Mouseout wieder rückwärts laufen lässt bis zum Startpunkt.

    PHP:
    1. stop();
    2. But1.stop();
    3. But1.addEventListener(MouseEvent.CLICK, rules_handler);
    4. But1.addEventListener(MouseEvent.MOUSE_OVER, rules_handler);
    5. But1.addEventListener(MouseEvent.MOUSE_OUT, rules_handler);
    6.  
    7. function rules_handler(e) {
    8.  
    9.     if (e.type==MouseEvent.CLICK) {
    10.         this.gotoAndStop(2);
    11.     }
    12.     else if (e.type==MouseEvent.MOUSE_OVER) {
    13.         But1.play();
    14.     }
    15.     else if (e.type==MouseEvent.MOUSE_OUT) {
    16.         But1.addEventListener(Event.ENTER_FRAME, goBack);
    17.     }
    18. }
    19.  
    20. function goBack(e:Event):void {
    21.    
    22.     if (e.target.currentFrame > 1) {
    23.         e.target.prevFrame();
    24.        
    25.     } else {
    26.         e.target.removeEventListener(Event.ENTER_FRAME, goBack);
    27.     }
    28.  
    29. }
    Meine Probleme sind folgende:
    1. Das Abspielen beim Mouseover muss bei Frame 10 anhalten. Ich weiss nicht, wie ich das innerhalb des Events prüfen und unterbrechen kann.
    2. Die Rückwärts-Funktion kann nicht durch einen Mouseover unterbrochen werden, bis sie auf Frame 1 ist. Der Tween sollte jedoch sobald man wieder Mouseovert, auch wenn der Tween am rückwärts laufen ist, vorwärts ablaufen.

    Jenste if-Varianten etc. habe ich nciht zum laufen gebracht - ich hoffe es gibt eine kompakte Lösung für mein Problem.

    Danke im Voraus

    Dimitrj
     
    Zuletzt bearbeitet: 21.08.2010
    #1      
  2. Dimitrj

    Dimitrj Nicht mehr ganz neu hier

    Dabei seit:
    13.02.2008
    Beiträge:
    115
    Geschlecht:
    männlich
    MC stoppen und Rückwärts-Schleife unterbrechen
    AW: MC stoppen und Rückwärts-Schleife unterbrechen

    Problem 1 ist noch immer ungelöst.
    Problem 2 so gelöst (danke an RustyCake und geo von flashforum.de):

    PHP:
    1.     function rules_handler(e) {
    2.      
    3.         if (e.type==MouseEvent.CLICK) {
    4.             this.gotoAndStop(2);
    5.         }
    6.         else if (e.type==MouseEvent.MOUSE_OVER) {
    7.             But1.removeEventListener(Event.ENTER_FRAME, goBack);
    8.             But1.play();
    9.         }
    10.         else if (e.type==MouseEvent.MOUSE_OUT) {
    11.             But1.addEventListener(Event.ENTER_FRAME, goBack);
    12.         }
    13.     }
    14.  
    15.  
     
    #2      
  3. Dimitrj

    Dimitrj Nicht mehr ganz neu hier

    Dabei seit:
    13.02.2008
    Beiträge:
    115
    Geschlecht:
    männlich
    MC stoppen und Rückwärts-Schleife unterbrechen
    AW: MC stoppen und Rückwärts-Schleife unterbrechen

    Problem gelöst!
    Ich hab' jetzt den Vorwärtsgang einfach spiegelbildlich zum Rückwärtsgang angelegt :)
    Ich weiss nicht, ob das wahnsinnig elegant ist, aber es tut seinen Zweck. Kritik und Verbesserungen sind natürlich immernoch herzlich willkommen.
    Im folgenden der funktionierende Code:

    Code (Text):
    1. stop();
    2. But1.stop();
    3. But1.addEventListener(MouseEvent.CLICK, rules_handler);
    4. But1.addEventListener(MouseEvent.MOUSE_OVER, rules_handler);
    5. But1.addEventListener(MouseEvent.MOUSE_OUT, rules_handler);
    6.  
    7. function rules_handler(e) {
    8.  
    9.     if (e.type==MouseEvent.CLICK) {
    10.         this.gotoAndStop(2);
    11.     }
    12.     else if (e.type==MouseEvent.MOUSE_OVER) {
    13.         But1.removeEventListener(Event.ENTER_FRAME, goBack);
    14.         But1.addEventListener(Event.ENTER_FRAME, goForth);        
    15.     }
    16.     else if (e.type==MouseEvent.MOUSE_OUT) {
    17.         But1.removeEventListener(Event.ENTER_FRAME, goForth);
    18.         But1.addEventListener(Event.ENTER_FRAME, goBack);
    19.     }
    20. }
    21.  
    22. function goBack(e:Event):void {
    23.     if (e.target.currentFrame > 1) {
    24.         e.target.prevFrame();
    25.     } else {
    26.         e.target.removeEventListener(Event.ENTER_FRAME, goBack);
    27.     }
    28. }
    29.  
    30. function goForth(e:Event):void {
    31.     if (e.target.currentFrame < 24) {
    32.         e.target.nextFrame();
    33.     } else {
    34.         e.target.removeEventListener(Event.ENTER_FRAME, goForth);
    35.     }
    36. }
     
    #3      
Seobility SEO Tool
x
×
×