public void Show(string message, RectTransform rectTransform, TooltipAnchorPosition anchorPosition) { if (rectTransform == null) { return; } resizerText.text = message; switch (State) { case TooltipState.HIDDEN: State = TooltipState.WAITING_FOR_DISPLAY; break; case TooltipState.FADING_OUT: State = TooltipState.FADING_IN; break; } StartCoroutine(waitForAndOfAFrameAndReposition(rectTransform, anchorPosition)); }
private void Update() { switch (State) { case TooltipState.FADING_IN: { float newAlpha = canvasGroup.alpha + showRate * Time.deltaTime; if (newAlpha >= 1f) { State = TooltipState.VISIBLE; } canvasGroup.alpha = newAlpha; } break; case TooltipState.FADING_OUT: { float newAlpha = canvasGroup.alpha - showRate * Time.deltaTime; if (newAlpha <= 0f) { State = TooltipState.HIDDEN; } canvasGroup.alpha = newAlpha; } break; case TooltipState.HIDDEN: break; case TooltipState.VISIBLE: break; case TooltipState.WAITING_FOR_DISPLAY: timer += Time.deltaTime; if (timer >= waitTime) { timer = 0; State = TooltipState.FADING_IN; } break; } }
private void Awake() { if (Instance != null) { Destroy(this.gameObject); } else { Instance = this; State = TooltipState.HIDDEN; } }
/// <summary> /// 呼叫狀態處理含式 /// </summary> /// <param name="anotherState">狀態</param> /// <param name="anotherEvent">事件類別</param> /// <param name="mouseEvent">滑鼠事件</param> /// <returns>回傳下一個狀態</returns> public TooltipState CallTransitionFunction(TooltipState anotherState, TooltipEvent anotherEvent, MouseEvent mouseEvent) { // 取得狀態轉移函式 if (!this.TransitionFunctions.TryGetValue(anotherState, out var transitionFunction)) { throw new UnexpectedStateException(); } // 呼叫狀態轉移函式 var nextState = transitionFunction.HandledEvent(anotherEvent, mouseEvent); return(nextState); }
/// <summary> /// 轉移至新狀態 /// </summary> /// <param name="newState">新狀態</param> /// <returns>移轉後的狀態</returns> public TooltipState StateTransition(TooltipState newState) { // 狀態相同,不移轉 if (newState == this.CurrentState) { return(this.CurrentState); } // 取得新狀態的狀態轉移函式 if (!this.TransitionFunctions.TryGetValue(newState, out this.CurrentTransitionFunction)) { throw new UnexpectedStateException(); } this.CurrentState = newState; return(this.CurrentState); }
public override void Process(TagHelperContext context, TagHelperOutput output) { if (!String.IsNullOrWhiteSpace(Tooltip)) { output.Attributes.RemoveAll("tooltip"); output.Attributes.Add("data-toggle", "kt-tooltip"); output.Attributes.Add("data-original-title", Tooltip); output.Attributes.Add("data-container", "body"); output.Attributes.Add("data-html", "true"); if (TooltipState.IsUsed()) { output.Attributes.RemoveAll("tooltip-skin"); output.Attributes.Add("data-skin", TooltipState.ToValue()); } if (TooltipPlacement.IsUsed()) { output.Attributes.RemoveAll("tooltip-placement"); output.Attributes.Add("data-placement", TooltipPlacement.ToValue()); } if (TooltipTrigger.IsUsed()) { output.Attributes.RemoveAll("tooltip-trigger"); output.Attributes.Add("data-trigger", TooltipTrigger.ToValue()); } if (TooltipOffset != default) { output.Attributes.RemoveAll("tooltip-offset"); output.Attributes.Add("data-offset", $"{TooltipOffset.Item1}px {TooltipOffset.Item2}px"); } } }
public void Hide() { switch (State) { case TooltipState.VISIBLE: case TooltipState.FADING_IN: State = TooltipState.FADING_OUT; break; case TooltipState.WAITING_FOR_DISPLAY: State = TooltipState.HIDDEN; timer = 0f; break; } }