@Override public void cancelLayerTouches(Layer except) { double now = PlayN.currentTime(); Iterator<Map.Entry<Integer,AbstractLayer>> iter = activeLayers.entrySet().iterator(); while (iter.hasNext()) { Map.Entry<Integer,AbstractLayer> entry = iter.next(); AbstractLayer layer = entry.getValue(); if (layer == except) continue; iter.remove(); Event.Impl event = new Event.Impl(new Events.Flags.Impl(), now, 0, 0, entry.getKey()); dispatcher.dispatch(layer, LayerListener.class, event, CANCEL); } }
/** * Performs the actual parsing of the MotionEvent event. * * @param event The MotionEvent to process * @param preventDefault Shared preventDefault state among returned {@link AndroidTouchEventImpl} * @return Processed array of {@link AndroidTouchEventImpl}s which share a preventDefault state. */ private Touch.Event.Impl[] parseMotionEvent(MotionEvent event, Events.Flags flags) { int eventPointerCount = event.getPointerCount(); Touch.Event.Impl[] touches = new Touch.Event.Impl[eventPointerCount]; double time = event.getEventTime(); float pressure, size; int id; for (int t = 0; t < eventPointerCount; t++) { int pointerIndex = t; IPoint xy = platform.graphics().transformTouch( event.getX(pointerIndex), event.getY(pointerIndex)); pressure = event.getPressure(pointerIndex); size = event.getSize(pointerIndex); id = event.getPointerId(pointerIndex); touches[t] = new Touch.Event.Impl(flags, time, xy.x(), xy.y(), id, pressure, size); } return touches; } }
/** * Performs the actual parsing of the MotionEvent event. * * @param event The MotionEvent to process * @param preventDefault Shared preventDefault state among returned {@link AndroidTouchEventImpl} * @return Processed array of {@link AndroidTouchEventImpl}s which share a preventDefault state. */ private Touch.Event.Impl[] parseMotionEvent(MotionEvent event, Events.Flags flags) { int eventPointerCount = event.getPointerCount(); Touch.Event.Impl[] touches = new Touch.Event.Impl[eventPointerCount]; double time = event.getEventTime(); float pressure, size; int id; for (int t = 0; t < eventPointerCount; t++) { int pointerIndex = t; IPoint xy = platform.graphics().transformTouch( event.getX(pointerIndex), event.getY(pointerIndex)); pressure = event.getPressure(pointerIndex); size = event.getSize(pointerIndex); id = event.getPointerId(pointerIndex); touches[t] = new Touch.Event.Impl(flags, time, xy.x(), xy.y(), id, pressure, size); } return touches; } }
public void handleEvent(NativeEvent nativeEvent) { inTouchSequence = true; Events.Flags flags = new Events.Flags.Impl(); onTouchStart(toEvents(nativeEvent, flags)); if (flags.getPreventDefault()) public void handleEvent(NativeEvent nativeEvent) { if (inTouchSequence) { Events.Flags flags = new Events.Flags.Impl(); onTouchMove(toEvents(nativeEvent, flags)); if (flags.getPreventDefault()) public void handleEvent(NativeEvent nativeEvent) { if (inTouchSequence) { Events.Flags flags = new Events.Flags.Impl(); onTouchEnd(toEvents(nativeEvent, flags)); if (flags.getPreventDefault())
private Event.Impl[] toTouchEvents(NSSet<UITouch> touches, UIEvent event) { final Event.Impl[] events = new Event.Impl[touches.size()]; int idx = 0; for (UITouch touch : touches) { CGPoint loc = touch.getLocationInView(touch.getView()); // transform the point based on our current scale IPoint xloc = platform.graphics().transformTouch((float)loc.getX(), (float)loc.getY()); // on iOS the memory address of the UITouch object is the unique id int id = (int)touch.getHandle(); events[idx++] = new Event.Impl( new Events.Flags.Impl(), touch.getTimestamp() * 1000, xloc.x(), xloc.y(), id); } return events; } }
Event.Impl toTouch (double time, float x, float y, int idoff) { return new Event.Impl(new Events.Flags.Impl(), time, x, y, currentId+idoff); }
private Event.Impl[] toEvents(NativeEvent nativeEvent, Events.Flags flags) { // Convert the JsArray<Native Touch> to an array of Touch.Events JsArray<com.google.gwt.dom.client.Touch> nativeTouches = nativeEvent.getChangedTouches(); int nativeTouchesLen = nativeTouches.length(); Event.Impl[] touches = new Event.Impl[nativeTouchesLen]; for (int t = 0; t < nativeTouchesLen; t++) { com.google.gwt.dom.client.Touch touch = nativeTouches.get(t); float x = touch.getRelativeX(rootElement); float y = touch.getRelativeY(rootElement); Point xy = platform.graphics().transformMouse(x, y); int id = getTouchIdentifier(nativeEvent, t); touches[t] = new Event.Impl(flags, PlayN.currentTime(), xy.x, xy.y, id); } return touches; }
Event.Impl toTouch (double time, float x, float y, int idoff) { return new Event.Impl(new Events.Flags.Impl(), time, x, y, currentId+idoff); }
@Override public Event.Impl localize(Layer hit) { return new Event.Impl(hit, flags(), time(), x(), y(), id(), pressure(), size()); }