victorteokw / CocoaBean

Write a single code base in javaScript, and deploy everywhere.
MIT License
27 stars 10 forks source link

Gesture dispatch. #4

Open victorteokw opened 9 years ago

victorteokw commented 9 years ago

How to dispatch gestures and clicks? Does this work? http://stackoverflow.com/questions/5931172/x-y-touch-coordinates-for-ios-mobile-devices

document.addEventListener('touchstart', function(e) {
    }, false);

    document.addEventListener('touchmove', function(e) {
        e.preventDefault();
    }, false);
victorteokw commented 9 years ago

The code for dispatch user events are

  setupEventDispatcher: () ->
    $body = $("body")
    events = ["touchstart", "touchmove", "touchend", "touchcancel",
      "mousemove", "mousedown", "mouseup"]
    for event in events
      block = (event) =>
        $body.on event, (e) =>
          this[event](e)
      block(event)

  mousedown: (e) ->
    layer = $(e.target)
    view = layer.data("view")
    while !view
      break if layer.is($(document))
      layer = layer.parent()
      view = layer.data("view")
    responder = view
    while responder && !responder.canBecomeFirstResponder()
      responder = responder.nextResponder()
    if responder
      event = new CB.Event
      event._timestamp = "ok"
      event._locationInWindow = new CB.Point(e.clientX, e.clientY)
      event._type = "mouse"
      event._view = view
      event._window = view.window
      responder.mouseDownWithEvent(event)
victorteokw commented 9 years ago

issues

  1. timestamp should be corrected by real timestamp
  2. only mouse down is implemented now, need to complete the whole implementation
  3. event type is not figured out, should discuss. should it be "mouse.down", "touch.end", "key.up" or "mouse", "touch"?