找回密码
 立即注册
查看: 3018|回复: 0

Tizen触摸事件版本 1: 控制触摸事件

[复制链接]
发表于 2015-4-29 20:54:54 | 显示全部楼层 |阅读模式
相关信息

本教程演示了如何使用Tizen触摸事件。
热身
熟悉触摸事件版本1 API通过学习基本知识:
处理触摸事件定义一个元素触发触摸事件和应对事件的事件处理程序。
检索事件发生检索移动触摸事件的位置。
控制多点触摸处理多个并发触摸事件。
任务在移动应用程序
接触油漆任务,我们将穿过画一个简单的图像通过使用触摸事件和画布元素。
任务在可穿戴应用程序
接触油漆任务,我们将穿过画一个简单的图像通过使用触摸事件和画布元素。
后续
一旦我们学会了基本的触摸事件版本1 API,我们现在可以转移到更高级的任务,包括:
加强触摸响应能力加强触摸响应能力来提高性能。

  • 处理触摸事件隐藏

    学习如何处理触摸事件提高了应用程序的用户交互:

    • 定义你想要的元素触发触摸事件。 在这种情况下,一个区域一个文本和图像被定义为一个元素。
      1. <div id="touchable">
      2.    Touch or drag this box with one finger.
      3.    <img src="https://www.tizen.org/sites/all/themes/tizen_theme/logo.png" alt="Tizen logo">
      4. </div>
      5. <div id="log"></div>
      复制代码

    • 为定义的元素添加事件处理程序:
      1. <script>
      2.    var log = document.querySelector("log");
      3.    var touchable = document.querySelector("touchable");

      4.    /* touchstart event */
      5.    touchable.addEventListener("touchstart", function(e)
      6.    {
      7.       log.innerHTML = "<p>Touch Event: touchstart</p>";
      8.    }, false);
      9.    
      10.    /* touchend event */
      11.    touchable.addEventListener("touchend", function(e)
      12.    {
      13.       log.innerHTML += "<p>Touch Event: touchend</p>";
      14.    }, false);
      15.    
      16.    /* touchmove event */
      17.    touchable.addEventListener("touchmove", function(e)
      18.    {
      19.       log.innerHTML += "<p>Touch Event: touchmove</p>";
      20.    }, false);
      21.    
      22.    /* touchcancel event */
      23.    touchable.addEventListener("touchcancel", function(e)
      24.    {
      25.       log.innerHTML += "<p>Touch Event: touchcancel</p>";
      26.    }, false);
      27. </script>
      复制代码
      根据接触类型、不同的触摸事件发生:

      • 当用户触摸的元素, touchstarttouchend事件发生。
        图:简单的触摸(仅在移动应用程序中)
        当用户把他们的手指在元素,然后将他们的手指,touchstart,touchmove,touchend事件发生。
        图:移动触摸(仅在移动应用程序中)
        当用户长按DOM元素,比如文本或图像,在元素touchstart
        事件发生。
        图:取消联系长按(仅在移动应用程序中)
        注意:
        自设备可以通过触摸屏幕输入发生,有时应用程序的功能和浏览器可以同时回应相同的触摸事件。 为了防止意想不到的影响(例如,定制的姿态和浏览器滚动操作同时),使用
        preventDefault ()
        方法以防止浏览器的基本事件:
        1. <script>
        2.    touchable.addEventListener("touchmove", function(e)
        3.    {
        4.       if (event.touches.length >= 1)
        5.       {
        6.          log.innerHTML += "<p>Touch Event: touchmove</p>";
        7.          e.preventDefault(); /* Prevent default scroll action */
        8.       }
        9.    }, false);
        10. </script>
        复制代码

检索事件发生隐藏

学习如何检索触摸事件的坐标点发生改善应用程序的用户交互:
  • 定义你想要的元素触发触摸事件。 在这种情况下,一个地区一个文本定义为一个元素。
    1. <div id="touchable">
    2.    Touch and move this box with one finger.
    3. </div>
    4. <div id="log"></div>
    复制代码
    2.添加一个事件侦听器和处理程序 touchmove事件定义的元素:
    1. <script>
    2.    var log = document.getElementById("log");
    3.    var touchable = document.getElementById("touchable");

    4.    /* touchmove event */
    5.    touchable.addEventListener("touchmove", phaseCalcul, false);
    6.    
    7.    function phaseCalcul(e)
    8.    {
    9.       var pTarget = e.touches.item(0);
    10.    
    11.       log.innerHTML =
    12.          '<strong>pageX:</strong> ' + pTarget.pageX +
    13.          '<br><strong>pageY:</strong> ' + pTarget.pageY +
    14.          '<br><strong>clientX:</strong> ' + pTarget.clientX +
    15.          '<br><strong>clientY:</strong> ' + pTarget.clientY +
    16.          '<br><strong>screenX:</strong> ' + pTarget.screenX +
    17.          '<br><strong>screenY:</strong> ' + pTarget.screenY;
    18.    
    19.       e.preventDefault();
    20.    }
    21. </script>
    复制代码


  • 2.每一次 touchmove 事件被触发时,触点的位置更新。 的位置在2 d坐标返回页面,客户端,和屏幕。 您可以使用比较坐标的位置 touchstarttouchend事件,分析用户使用顺向的姿态 touchmove 事件确定运动方向。
源代码
这个用例相关的完整源代码,看到下面的文件:
控制多点触摸隐藏

学习如何控制多个并发的触摸事件提高了应用程序的用户交互:
  • 定义你想要的元素触发触摸事件。 在这种情况下,一个地区一个文本定义为一个元素。
    1. <div id="touchable"> Touch this box with two finger. </div>
    复制代码

  • 添加一个事件侦听器和处理程序 touchstart事件定义的元素:
    1. <script>
    2.    var touchable = document.getElementById("touchable");
    3.    
    4.    /* touchstart event */
    5.    touchable.addEventListener("touchstart", touchStartHandler, false);
    6.    
    7.    function touchStartHandler(e)
    8.    {
    9.       /* Return if there is no multi-point touch */
    10.       if (e.touches.length < 2) return;

    11.       var width = Math.abs(e.touches.item(0).clientX - e.touches.item(1).clientX);        
    12.       var height = Math.abs(e.touches.item(0).clientY - e.touches.item(1).clientY);
    13.         
    14.       /* Create a new image object instance */
    15.       var tizenLogo = document.createElement("img");                    
    16.       tizenLogo.setAttribute("src", "sample_image.png");
    17.       tizenLogo.setAttribute("width", width);
    18.       tizenLogo.setAttribute("height", height);
    19.       tizenLogo.style.position = "absolute";
    20.         
    21.       /* Assign the position where the image is shown based on the touch point */
    22.       tizenLogo.style.left = (e.touches.item(0).pageX + e.touches.item(1).pageX - width) / 2 + "px";
    23.       tizenLogo.style.top = (e.touches.item(0).pageY + e.touches.item(1).pageY - height) / 2 + "px";
    24.         
    25.       this.appendChild(tizenLogo);
    26.    }   
    27. </script>
    复制代码


  • 3.当触摸事件被触发时,它的细节,比如事件坐标,身份证号码,联系的主题,存储在 联系接口的实例。 访问细节 touches.item()方法可以用在一个数组的格式。
    多点触摸事件是指其他实例被推到 touches.item(index)数组中。 例如,第一个触摸事件被推 touches.item(0),如果第二个触摸事件触发没有删除第一个手指从屏幕上,第二个事件被推 touches.item(1)
源代码
这个用例相关的完整源代码,看到下面的文件:

加强触摸响应能力隐藏

避免延误单一利用姿态,可以使页面不能攀登的,或修改触摸反应:
  • 页面不能攀登的:
    如果一个页面不能攀登的,手势是手势缩放不需要,所以单一利用手势可以及时处理。 页面不能攀登的,使用 viewport meta标签:
    1. <meta name="viewport"
    2.       content="width=device-width, initial-scale=1.0, minimum-scale=1.0,
    3.                maximum-scale=1.0, user-scalable=0">
    复制代码
    修改接触反应事件发生时立即当碰触点被释放,使其速度比水龙头事件。 然而,事件发生时即使碰触点移动之前释放。
    • 为了避免处理手势触摸点移动时,检查是否感动的一点是通过设置一个标志的移动 touchmove () 事件处理程序:
      1. <a id="test" href="#">Click test using touch event</a>
      2. <div id="log"></div>
      3. <script>
      4.    var moved = false;

      5.    $('#test').on('touchstart', function(e)
      6.    {
      7.       moved = false;
      8.    });

      9.    $('#test').on('touchmove', function(e)
      10.    {
      11.       moved = true;
      12.    });

      13.    $('#test').on('touchend', function(e)
      14.    {
      15.       if (!moved)
      16.          $('#log').innerHTML = "Test link is clicked!";

      17.       return false;
      18.    });
      19. </script>
      复制代码

  • 为了避免激活点击事件后触摸事件,设置返回类型 false
  • 你也可以使用 vclick jQuery 移动提供事件 vclick 事件基于触摸事件生成感动
    1. <a id="test" href="#">Click test using touch event</a>
    2. <div id="log"></div>
    3. <script>
    4.    $('#test').on('vclick', function(e)
    5.    {
    6.       $('#log').html("Test link is clicked!");

    7.       return false;
    8.    });
    9. </script>
    复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
欢迎来到泰泽网:http://www.tizennet.com/ 泰泽论坛:http://bbs.tizennet.com/ 好没有内涵哦,快到设置中更改这个无聊的签名吧!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|泰泽应用|泰泽论坛|泰泽网|小黑屋|Archiver|手机版|泰泽邮箱|泰泽网 ( 蜀ICP备13024062号-1 )

GMT+8, 2024-3-29 17:31 , Processed in 0.099869 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表