/// <summary> /// ステータスによって文字列を返す /// </summary> /// <param name="touchStatus">ステータス</param> /// <returns>状態の文字列</returns> public static string GetStatusString(TouchStatus touchStatus) { switch (touchStatus) { case TouchStatus.kNone: return("None"); case TouchStatus.kBegan: return("Began"); case TouchStatus.kMoved: return("Moved"); case TouchStatus.kStationary: return("Stationary"); case TouchStatus.kEnded: return("Ended"); case TouchStatus.kCanceled: return("Canceled"); default: return("Unknown"); } }
public void Update() { List <TouchData> touches = Touch.GetData(0); foreach (TouchData data in touches) { currentTouchStatus = data.Status; // never gets used float xPos = (data.X + 0.5f) * screenWidth; float yPos = screenHeight - ((data.Y + 0.5f) * screenHeight); if (data.Status == TouchStatus.Move) { // Console.WriteLine("x : " + xPos); // Console.WriteLine("y : " + yPos); position = new Vector2(xPos, yPos); touching = true; } else { touching = false; } } previousTouchData = currentTouchStatus; // never gets used sprite.Position = position; sprite.CenterSprite(); }
//set status for TouchStatus (swipe, pick, idle) void updateStatus(float dt) { //step 0. check touch status idle if (touchStatus == TouchStatus.idle) { //step 1. check normal distance if (_normalDistance > 0.05) { //step 2. compare x with y if (Mathf.Abs(_elapsedNormalPosition.x) > Mathf.Abs(_elapsedNormalPosition.y)) { touchStatus = TouchStatus.swipe; } else { touchStatus = TouchStatus.pick; } } else { touchStatus = TouchStatus.idle; } } //step 3. release if (updateTickList == null) { touchStatus = TouchStatus.idle; } }
/// <summary> /// 点击中 /// </summary> /// <param name="pointPos"></param> protected virtual void OnTouch(Vector3 curPos) { m_longPressTimer += Time.deltaTime; m_curPos = curPos; if (m_touchStatus != TouchStatus.Moving) { m_moveDis = Vector2.Distance(m_pointPos, m_curPos); if (m_moveDis >= m_inputManager.m_moveTolerace) { m_touchStatus = TouchStatus.Moving; m_inputManager.InvokeInput(InputType.OnMoveBegin, m_curPos); } if (m_touchStatus == TouchStatus.Touch && m_longPressTimer >= m_inputManager.m_longPressSpan) { m_touchStatus = TouchStatus.LongPress; m_inputManager.InvokeInput(InputType.OnLongPress, m_curPos); } } else { m_inputManager.InvokeInput(InputType.OnMove, m_curPos); } }
internal void HandleTouch(TouchEffect sender, TouchStatus status) { if (sender.IsDisabled) { return; } var canExecuteAction = sender.CanExecute; if (status != TouchStatus.Started || canExecuteAction) { if (!canExecuteAction) { status = TouchStatus.Canceled; } var state = status == TouchStatus.Started ? TouchState.Pressed : TouchState.Normal; if (status == TouchStatus.Started) { animationProgress = 0; animationState = state; } var isToggled = sender.IsToggled; if (isToggled.HasValue) { if (status != TouchStatus.Started) { durationMultiplier = (animationState == TouchState.Pressed && !isToggled.Value) || (animationState == TouchState.Normal && isToggled.Value) ? 1 - animationProgress : animationProgress; UpdateStatusAndState(sender, status, state); if (status == TouchStatus.Canceled) { sender.ForceUpdateState(false); return; } OnTapped(sender); sender.IsToggled = !isToggled; return; } state = isToggled.Value ? TouchState.Normal : TouchState.Pressed; } UpdateStatusAndState(sender, status, state); } if (status == TouchStatus.Completed) { OnTapped(sender); } }
public void OnPointerUp(PointerEventData eventData) { if (status != TouchStatus.Exit) { status = TouchStatus.Exit; onLeave?.Invoke(); } }
void ReleaseDesignerOutlets() { if (DoubleTouchImage != null) { DoubleTouchImage.Dispose(); DoubleTouchImage = null; } if (DragImage != null) { DragImage.Dispose(); DragImage = null; } if (TouchImage != null) { TouchImage.Dispose(); TouchImage = null; } if (TouchStatus != null) { TouchStatus.Dispose(); TouchStatus = null; } if (TouchView != null) { TouchView.Dispose(); TouchView = null; } }
public void HandleTouch(TouchStatus status, UserInteractionState?userInteractionState = null) { if (IsCanceled || _effect == null) { return; } if (_effect?.IsDisabled ?? true) { return; } _effect.HandleTouch(status); if (userInteractionState.HasValue) { _effect?.HandleUserInteraction(userInteractionState.Value); } if (_effect == null || !_effect.NativeAnimation || !_effect.CanExecute) { return; } var control = _effect.Control; var renderer = control?.GetRenderer() as UIView; if (renderer == null) { return; } var color = _effect.NativeAnimationColor; var radius = _effect.NativeAnimationRadius; var shadowRadius = _effect.NativeAnimationShadowRadius; var isStarted = status == TouchStatus.Started; _defaultRadius = (float?)(_defaultRadius ?? renderer.Layer.CornerRadius); _defaultShadowRadius = (float?)(_defaultShadowRadius ?? renderer.Layer.ShadowRadius); _defaultShadowOpacity = _defaultShadowOpacity ?? renderer.Layer.ShadowOpacity; UIView.AnimateAsync(.2, () => { if (color == Color.Default) { renderer.Layer.Opacity = isStarted ? 0.5f : (float)control.Opacity; } else { renderer.Layer.BackgroundColor = (isStarted ? color : control.BackgroundColor).ToCGColor(); } renderer.Layer.CornerRadius = isStarted ? radius : _defaultRadius.GetValueOrDefault(); if (shadowRadius >= 0) { renderer.Layer.ShadowRadius = isStarted ? shadowRadius : _defaultShadowRadius.GetValueOrDefault(); renderer.Layer.ShadowOpacity = isStarted ? 0.7f : _defaultShadowOpacity.GetValueOrDefault(); } }); }
public void Update(float deltaTime) { if(UnityEngine.Input.touchCount == 0) { Status = TouchStatus.None; return; } Touch touch = UnityEngine.Input.GetTouch(0); //if you currently aren't pressing the screen then grab the first finger if(Status == TouchStatus.None) { m_lastFingerId = touch.fingerId; } bool foundTouch = false; //find the right touch for the finger id for(int i = 0; i < UnityEngine.Input.touchCount; i++) { if(UnityEngine.Input.GetTouch(i).fingerId == m_lastFingerId) { touch = UnityEngine.Input.GetTouch(i); foundTouch = true; } } if(!foundTouch) { return; } if(touch.phase == TouchPhase.Began) { Status = TouchStatus.Pressed; HeldTime = 0.0f; PressedLocation = touch.position; ReleasedLocation = touch.position; SendEvent(0); } else if(touch.phase == TouchPhase.Canceled || touch.phase == TouchPhase.Ended) { Status = TouchStatus.Released; ReleasedLocation = touch.position; SendEvent(0); } else if(touch.phase == TouchPhase.Moved || touch.phase == TouchPhase.Stationary) { Status = TouchStatus.Held; HeldTime += deltaTime; ReleasedLocation = touch.position; SendEvent(0); } else { Status = TouchStatus.None; } }
/// <summary> /// 开始点击 /// </summary> /// <param name="pointPos"></param> protected virtual void OnTouchStart(Vector3 curPos) { m_touchStatus = TouchStatus.Touch; m_pointPos = curPos; m_curPos = curPos; m_longPressTimer = 0; InputManager.Instance.DispatchEvent(InputType.OnTouchBegin, m_pointPos); }
/// <summary> /// 开始点击 /// </summary> /// <param name="pointPos"></param> protected virtual void OnTouchStart(Vector3 curPos) { m_touchStatus = TouchStatus.Touch; m_pointPos = curPos; m_curPos = curPos; m_longPressTimer = 0; m_inputManager.InvokeInput(InputType.OnTouchBegin, m_pointPos); }
private bool ContainStatusPrev(List <TouchData> list, TouchStatus queryStatus) { bool isContain = false; foreach (TouchData data in list) { isContain |= data.Status == queryStatus; } return(isContain); }
void UpdateStatusAndState(TouchEffect sender, TouchStatus status, TouchState state) { if (sender.State != state || status != TouchStatus.Canceled) { sender.State = state; sender.RaiseStateChanged(); } sender.Status = status; sender.RaiseStatusChanged(); }
public void OnPointerDown(PointerEventData eventData) { press_number = 0; press_timer = Time.time + interval; onEnter?.Invoke(); status = TouchStatus.Enter; }
private void HandleEnd(TouchStatus status) { if (_canceled) { return; } if (_effect.DisallowTouchThreshold > 0) { Container.Parent?.RequestDisallowInterceptTouchEvent(false); } Element.GetTouchEff().HandleTouch(status); EndRipple(); }
private void HandleEnd(TouchStatus status) { if (IsCanceled) { return; } IsCanceled = true; if (_effect.DisallowTouchThreshold > 0) { Group.Parent?.RequestDisallowInterceptTouchEvent(false); } _effect?.HandleTouch(status); EndRipple(); }
public static int get_m_currentPosition(IntPtr l) { int result; try { TouchStatus touchStatus = (TouchStatus)LuaObject.checkSelf(l); LuaObject.pushValue(l, true); LuaObject.pushValue(l, touchStatus.m_currentPosition); result = 2; } catch (Exception e) { result = LuaObject.error(l, e); } return(result); }
void HandleEnd(TouchStatus status) { if (IsCanceled) { return; } IsCanceled = true; if (effect.DisallowTouchThreshold > 0) { Group.Parent?.RequestDisallowInterceptTouchEvent(false); } effect?.HandleTouch(status); effect?.HandleUserInteraction(TouchInteractionStatus.Completed); EndRipple(); }
public static int constructor(IntPtr l) { int result; try { TouchStatus o = new TouchStatus(); LuaObject.pushValue(l, true); LuaObject.pushValue(l, o); result = 2; } catch (Exception e) { result = LuaObject.error(l, e); } return(result); }
public static int set_m_pressed(IntPtr l) { int result; try { TouchStatus touchStatus = (TouchStatus)LuaObject.checkSelf(l); bool pressed; LuaObject.checkType(l, 2, out pressed); touchStatus.m_pressed = pressed; LuaObject.pushValue(l, true); result = 1; } catch (Exception e) { result = LuaObject.error(l, e); } return(result); }
public static int set_m_beginPosition(IntPtr l) { int result; try { TouchStatus touchStatus = (TouchStatus)LuaObject.checkSelf(l); Vector2 beginPosition; LuaObject.checkType(l, 2, out beginPosition); touchStatus.m_beginPosition = beginPosition; LuaObject.pushValue(l, true); result = 1; } catch (Exception e) { result = LuaObject.error(l, e); } return(result); }
//public bool OnTouch(Android.Views.View v, MotionEvent e) //{ // int[] viewCoords = new int[2]; // int[] viewCoords2 = new int[2]; // GetLocationOnScreen(viewCoords); // GetLocationInWindow(viewCoords2); // int touchX = (int)e.RawX; // int touchY = (int)e.RawY; // int positionOnViewX = touchX - viewCoords[0]; // int positionOnViewY = touchY - viewCoords[1]; // return true; //} public override bool OnTouchEvent(MotionEvent e) { var xamarinControl = Element as CustomControlTest; TouchStatus touchStatus = TouchStatus.None; //int[] viewCoords = new int[2]; //GetLocationOnScreen(viewCoords); //int touchX = (int)e.RawX; //int touchY = (int)e.RawY; //int positionOnViewX = touchX - viewCoords[0]; //int positionOnViewY = touchY - viewCoords[1]; switch (e.ActionMasked) { case MotionEventActions.Down: case MotionEventActions.PointerDown: touchStatus = TouchStatus.TouchDown; break; case MotionEventActions.Up: case MotionEventActions.PointerUp: touchStatus = TouchStatus.TouchUp; break; case MotionEventActions.Move: touchStatus = TouchStatus.TouchMove; break; } try { xamarinControl.OnTouchEvent(touchStatus, e.GetPointerId(e.ActionIndex), (int)e.RawX, (int)e.RawY); } catch (Exception) { } return(true); }
//protected override void OnSizeAllocated(double width, double height) //{ // base.OnSizeAllocated(width, height); //} //protected override void OnParentSet() //{ // base.OnParentSet(); // CenterJoy(); //} public void OnTouchEvent(TouchStatus touchStatus, int touchId, float x, float y) { if (touchStatus == TouchStatus.TouchDown && !_moveOn && IsJoyInside(x, y)) { _moveOn = true; _moveTouchId = touchId; _initialTouchX = x; _InitialTouchY = y; } else if (touchStatus == TouchStatus.TouchMove && _moveOn && _moveTouchId == touchId) { MoveJoy(x, y); FillPositions(); } else if (touchStatus == TouchStatus.TouchUp && _moveOn && _moveTouchId == touchId) { _moveOn = false; CenterJoy(); FillPositions(); } }
protected virtual void OnTouchEnd(Vector3 curPos) { m_curPos = curPos; if (m_touchStatus == TouchStatus.Moving) { m_inputManager.InvokeInput(InputType.OnMoveEnd, m_curPos); } if (m_touchStatus == TouchStatus.LongPress) { m_inputManager.InvokeInput(InputType.OnEndLongPress, m_curPos); } if (m_touchStatus == TouchStatus.Touch) { m_inputManager.InvokeInput(InputType.OnClick, m_curPos); } m_inputManager.InvokeInput(InputType.OnTouchEnd, m_curPos); m_touchStatus = TouchStatus.None; m_isTouchOnUI = false; }
private void DoBeginDrag(Vector2 pos) { m_status = TouchStatus.Dragging; BeginDragEvent?.Invoke(pos); }
public void HandleTouch(TouchStatus status, TouchInteractionStatus?touchInteractionStatus = null) { if (IsCanceled || effect == null) { return; } if (effect?.IsDisabled ?? true) { return; } if (touchInteractionStatus == TouchInteractionStatus.Started) { effect?.HandleUserInteraction(TouchInteractionStatus.Started); touchInteractionStatus = null; } effect.HandleTouch(status); if (touchInteractionStatus.HasValue) { effect.HandleUserInteraction(touchInteractionStatus.Value); } if (!effect.NativeAnimation) { return; } if (longTapStarted && !tapCompleted) { return; } var control = effect.Element; if (!(Platform.GetOrCreateRenderer(control)?.NativeView is Widget nativeView)) { return; } if (status == TouchStatus.Started) { var startColor = nativeView.BackgroundColor; if (startColor.IsDefault) { return; } var endColor = effect.NativeAnimationColor.ToNative(); if (endColor.IsDefault) { startColor = EColor.FromRgba(startColor.R, startColor.G, startColor.B, startColor.A / 2); endColor = startColor; } var transit = new Transit { Repeat = 1, Duration = .2 }; var colorEffect = new ColorEffect(startColor, endColor); colorEffect.EffectEnded += (s, e) => { transit?.Dispose(); }; transit.Objects.Add(nativeView); transit.AddEffect(colorEffect); transit.Go(.2); } }
// 情報をコピーする public void Copy(TouchInfo copySource) { touchId = copySource.touchId; position = copySource.position; status = copySource.status; }
/// <summary> /// 重置状态 /// </summary> protected virtual void Reset() { m_isTouchOnUI = false; m_touchStatus = TouchStatus.None; m_longPressTimer = 0; }
internal void HandleTouch(TouchEff sender, TouchStatus status) { if (sender.IsDisabled) { return; } var canExecuteAction = sender.CanExecute; if (status != TouchStatus.Started || canExecuteAction) { if (!canExecuteAction) { status = TouchStatus.Canceled; } var state = status == TouchStatus.Started ? TouchState.Pressed : TouchState.Regular; if (status == TouchStatus.Started) { _animationProgress = 0; _animationState = state; } var isToggled = sender.IsToggled; if (isToggled.HasValue) { if (status != TouchStatus.Started) { _durationMultiplier = (_animationState == TouchState.Pressed && !isToggled.Value) || (_animationState == TouchState.Regular && isToggled.Value) ? 1 - _animationProgress : _animationProgress; sender.Status = status; sender.RaiseStatusChanged(); if (status == TouchStatus.Canceled) { sender.ForceUpdateState(false); return; } OnTapped(sender); sender.IsToggled = !isToggled; return; } state = isToggled.Value ? TouchState.Regular : TouchState.Pressed; if (status == TouchStatus.Canceled) { state = state == TouchState.Pressed ? TouchState.Regular : TouchState.Pressed; } } if (sender.State != state || status != TouchStatus.Canceled) { sender.State = state; sender.RaiseStateChanged(); } sender.Status = status; sender.RaiseStatusChanged(); } if (status == TouchStatus.Completed) { OnTapped(sender); } }
public void OnPointerDown(PointerEventData eventData) { m_status = TouchStatus.Press; PressedPos = eventData.position; }
private void Init() { m_status = TouchStatus.NoTouch; m_pressTimer = 0; m_isPressed = false; }