【研究中】OnClick 與 Scroll / Drag 更精準的判斷

2016年2月14日 星期日

【研究中】OnClick 與 Scroll / Drag 更精準的判斷


問題點:假設Menu中有多個Button,而Button是在一個Scroll Rect上可以滾動Menu
要如何解決使用者想要點按鈕但拖曳滾動(Scroll)選單過於靈敏而造成的誤判。

解法:將Click判斷更容易或是將Scroll觸發靈敏度降低

1.讓Click判斷更容易:目前的方法是假設觸發Down(按下)的時候紀錄位置,在Up(起來)時判斷位移,假設低於參數,則視為Click事件
優點:假設使用者想觸發按鈕,但卻略有位移會觸發Scroll,但同時也可以觸發Click達成目的
缺點:因為Scroll跟Click會同時觸發,這樣體驗上並不夠完善

2.讓Scroll靈敏度降低,可能要直接重寫Scroll方法掛在UI上,如果是直接調用的話,目前暫無解決的思路。

Code(C#)

//增強Click判定(在此觸控位移距離內都算是Click事件,以避免使用者想Click選單卻誤判為Scroll)
public float ClickJudgeDistance = 10;

public void OnPointerDown( PointerEventData eventData)
{
m_screenPos = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
}

public void OnPointerUp( PointerEventData eventData ){
        Vector2 pos = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
float dis = Vector2.Distance (pos, m_screenPos);
if(dis < ClickJudgeDistance ){
onClickDelegate();

}
}

0 意見 :

張貼留言

Popular Posts