public override float PlayLogic(float timeDp) { if (mState == FTweenState.TS_Noraml) { mProgress += timeDp * mDir * mSpeed; if (mProgress < 0 || mProgress > 1) { bool isEnd = mProgress >= 1; mActionModeFun(mTimes + 1); PlayUpdate(mEaseModeFun(Mathf.Clamp(mProgress, 0.0f, 1.0f))); SendMssage(++mTimes, isEnd); } else { PlayUpdate(mEaseModeFun(mProgress)); } return(0.0f); } else if (mState == FTweenState.TS_Delay) { if (mCurDelayTime > 0) { mCurDelayTime -= timeDp; if (mCurDelayTime > 0) { return(0.0f); } else { timeDp = -mCurDelayTime; } } mState = mIsInit?FTweenState.TS_Noraml:FTweenState.TS_Init; return(PlayLogic(timeDp)); } else if (mState == FTweenState.TS_Init) { _ResetOther(); mState = FTweenState.TS_Noraml; return(PlayLogic(timeDp)); } else if (mState == FTweenState.TS_Begin) { _ResetTween();//重置数据 if (mState != FTweenState.TS_Delay) { _ResetOther(); } SendMssage(++mTimes, false); return(PlayLogic(timeDp)); } else if (mState == FTweenState.TS_Delete) { return(-1.0f); } return(-1.0f); }
private bool IsOver(int timece) { if (mLoopTimes > 0 && mLoopTimes <= timece) { mState = FTweenState.TS_Delete; return(true); } return(false); }
//运动模式 private void ActMode_Onece(int timece) { mProgress = 1; if (mTurnDelayTime > 0.0001f && timece % 2 == 1) { SetNextDelayTime(mTurnDelayTime); } else { mState = FTweenState.TS_Delete; } }
private void SetNextDelayTime(float time) { if (time > 0) { mCurDelayTime = time; } else if (time < 0) { mProgress += time * mDir * mSpeed * -1; mCurDelayTime = 0; } else { mCurDelayTime = 0; } mState = mCurDelayTime > 0 ? FTweenState.TS_Delay : FTweenState.TS_Noraml; }