2016-05-01 23 views
0

Ich habe ein Problem mit dem Timing. Ich muss Traube MovieClip zum letzten Rahmen innerhalb von zum Beispiel 10 Sekunden holen und dann Animation ändern, aber onComplete feuert auf, nachdem Traube MC 11. Rahmen erreichte! Gibt es einen onTimeOut-Parameter oder etwas? Ich habe überall gesucht, viele Workarounds ausprobiert, aber nichts hat perfekt funktioniert, es wird entweder die gesamte Animation beendet, bevor der Timer abgelaufen ist oder umgekehrt.TweenMax Frame & onKomplettes Problem

private function changeAnimation():void 
{ 
    if (currentGrapeNumber > 0) 
    { 
     TweenMax.killTweensOf(grapes["Grape" + currentGrapeNumber]); 
     if (currentGrapeNumber == 30) 
     { 
      return; 
     } 
    } 
    currentGrapeNumber++; 
    currentAnimation = TweenMax.to(grapes["Grape" + currentGrapeNumber], minutesPerGrape * 60, { frame:11, onComplete:changeAnimation }); 
} 

EDIT 1: Es gibt Variable currentAnimation, weil Benutzer Pausentaste drücken kann. Ich versuche jetzt, eine eigene pausierbare Timer-Klasse als Workaround zu verwenden, hoffe aber immer noch, dass es einen Weg gibt, ohne Timer zu verwenden.

EDIT 2: Timer ist beteiligt, da App einen Countdown hat.

+0

Ich sehe nicht, wie ein Tweener in Ihrer Beschreibung beteiligt ist. Sicher, du willst nur einen Timer, der jede Sekunde läuft, bis er sagt, dass er aufhören soll. Stellen Sie ganzzahlige Variablen wie 'currentSec = 0;' und 'TotalSecs = 10;'. Die Timer-Funktion fügt jedes Mal, wenn Ihr Timer ausgelöst wird, +1 zu "currentSec" hinzu und sagt traube MC zu 'gotoAndStop (currentSec);'. Haben Sie eine 'if'-Anweisung, um zu prüfen, ob beide übereinstimmen. Was passiert also, wenn du 10 Frames über 20 Sekunden hast? 10/20 = 0,5. Sie können nicht zu Frame 0.5 gehen, aber der ganzzahlige Teil wird automatisch nach unten gerundet, so dass Frame 1 und 1.5 beide als Frame 1 klassifiziert sind (Halten für 2 Sekunden). Probieren Sie einen Timer und sehen Sie. –

+0

Tweener Tweens durch Rahmen (copypasted Linie von oben): 'currentAnimation = TweenMax.to (Trauben [ "Traube" + currentGrapeNumber], minutesPerGrape * 60, {frame: 11, onComplete: changeAnimation});' Timer ist beteiligte bereits, es ist bereits Countdown, TweenMax ruft nur auf Complete Callback früher als ich brauche, also fragte ich, ob es OnTimeOut Callback oder so ähnlich ist, Problem wird übrigens gelöst. –

+0

Okay. Ich bin immer noch verwirrt, aber zumindest ist es gelöst und funktioniert. –

Antwort

0

Problem gelöst, habe ich nur noch das zu updateClock Methode:

private function updateClock(e:TimerEvent):void 
{ 
    secondsToSwitch--; 
    if (secondsToSwitch == 0) 
    { 
     secondsToSwitch = Math.round(minutesPerGrape * 60); 
     changeAnimation(); 
    } 
    /** 
    * Function body 
    */ 
} 

Und geändert TweenMax.to() in changeAnimation Methode:

currentAnimation = TweenMax.to(grapes["Grape" + currentGrapeNumber], minutesPerGrape * 60, { frame:11 }); 

ABER. Wenn Sie einen alternativen oder mysteriösen "onTimeOut" -Parameter in TweenMax haben - zögern Sie nicht, es zu posten :)