示例#1
0
        public RepeatActionState(Drawable target, Repeat action)
            : base(target, action)
        {
            _innerAction = action.InnerAction;
            _innerActionState = (FinateTimeActionState) _innerAction.StartAction(target);

            _times = action.Times;
            _total = action.Total;

            _nextDt = _innerAction.Duration/Duration;
        }
示例#2
0
 public ActionEaseState(Drawable target, ActionEase action)
     : base(target, action)
 {
     _innerActionState = (FinateTimeActionState) action.InnerAction.StartAction(target);
 }
示例#3
0
        public override void Update(float time)
        {
            if (time >= _nextDt)
            {
                while (time > _nextDt && _total < _times)
                {
                    _innerActionState.Update(1f);
                    _total++;

                    _innerActionState.Stop();
                    _innerActionState = (FinateTimeActionState) _innerAction.StartAction(Target);
                    _nextDt = _innerAction.Duration/Duration*(_total + 1f);
                }

                if (time >= 1f && _total < _times)
                    _total++;

                if (_total == _times)
                {
                    _innerActionState.Update(1f);
                    _innerActionState.Stop();
                }
                else
                    _innerActionState.Update(time - (_nextDt - _innerActionState.Duration/Duration));
            } else
                _innerActionState.Update((time * _times) % 1f);
        }