/// <summary> /// Toistaa tämän hetkistä transitionia. Vaihtaa transitionin jos /// tämän hetkinen on toistettu loppuun. /// </summary> public void Update(GameTime gameTime) { if (isStarted) { if (currentTransition.IsFinished) { ChangeTransition(); } else { currentTransition.Update(gameTime); } } }
public override void Update(GameTime gameTime) { if (Out != null) { if (Out.IsFinished != _oldState && OnHalf != null) { OnHalf(); } _oldState = Out.IsFinished; } if (InitialState != null && Out != null && !Out.IsFinished) { Out.Update(gameTime, OutSpeed); } else if (TargetState != null && In != null && !In.IsFinished) { In.Update(gameTime, InSpeed); } else { _engine.SwitchState(TargetState); } }
public virtual void Update(GameTime time) { // jos nykyisellä ruudulla on lopetus siirtymä if (leaveTransition != null) { if (!leaveTransition.IsStarted) { leaveTransition.Start(); } leaveTransition.Update(time); // jos siirtymä on valmis niin vaihdetaan ruutu seuraavaan // ja aletaan suorittamaan aloitus siirtymää if (leaveTransition.IsFinished) { leaveTransition = null; // jos on viiminen ruutu, niin nextiä ei sillon ole if (next != null) { if (next.IsPopUp) { current.State = ScreenState.Background; } else { current.State = ScreenState.Hidden; // ei ole enää näkyvissä } // vaihdetaan ruutujen paikat T prev = current; current = next; // tyhjennetään nykyisen ruudun viite next = default(T); current.State = ScreenState.TransitionOn; // ollaan häivyttämässä kuvaa sisään if (prev.IsPopUp) { enterTransition = new EmptyTransition(); } else { enterTransition = current.EnterTransition; } if (enterTransition == null) { enterTransition = new EmptyTransition(); } enterTransition.Init(current, prev); } } } for (int i = states.Count - 1; i >= 0; i--) { T state = states[i]; state.Update(time); } if (enterTransition != null) { if (!enterTransition.IsStarted) { enterTransition.Start(); } enterTransition.Update(time); if (enterTransition.IsFinished) { enterTransition = null; current.State = ScreenState.Active; // nyt ollaan näkyvissä current.HasFocus = true; for (int i = states.Count - 1; i >= 0; i--) { T state = states[i]; if (state.IsExiting) { Remove(state); } } } } }