密西西比河 发表于 2015-4-29 20:54:54

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

相关信息
[*]触摸事件版本1的向导
[*]触摸事件为移动网络版本1的API
[*]触摸事件为可穿戴WEB版本1的API

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

[*]显示所有
[*]隐藏所有


[*]处理触摸事件隐藏

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

[*]定义你想要的元素触发触摸事件。 在这种情况下,一个区域一个文本和图像被定义为一个元素。<div id="touchable">
   Touch or drag this box with one finger.
   <img src="https://www.tizen.org/sites/all/themes/tizen_theme/logo.png" alt="Tizen logo">
</div>
<div id="log"></div>
[*]为定义的元素添加事件处理程序: <script>
   var log = document.querySelector("log");
   var touchable = document.querySelector("touchable");

   /* touchstart event */
   touchable.addEventListener("touchstart", function(e)
   {
      log.innerHTML = "<p>Touch Event: touchstart</p>";
   }, false);
   
   /* touchend event */
   touchable.addEventListener("touchend", function(e)
   {
      log.innerHTML += "<p>Touch Event: touchend</p>";
   }, false);
   
   /* touchmove event */
   touchable.addEventListener("touchmove", function(e)
   {
      log.innerHTML += "<p>Touch Event: touchmove</p>";
   }, false);
   
   /* touchcancel event */
   touchable.addEventListener("touchcancel", function(e)
   {
      log.innerHTML += "<p>Touch Event: touchcancel</p>";
   }, false);
</script>根据接触类型、不同的触摸事件发生:

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

[*]源代码这个用例相关的完整源代码,看到下面的文件:
touch_event_types.html
检索事件发生隐藏

学习如何检索触摸事件的坐标点发生改善应用程序的用户交互:

[*]定义你想要的元素触发触摸事件。 在这种情况下,一个地区一个文本定义为一个元素。<div id="touchable">
   Touch and move this box with one finger.
</div>
<div id="log"></div>2.添加一个事件侦听器和处理程序 touchmove事件定义的元素: <script>
   var log = document.getElementById("log");
   var touchable = document.getElementById("touchable");

   /* touchmove event */
   touchable.addEventListener("touchmove", phaseCalcul, false);
   
   function phaseCalcul(e)
   {
      var pTarget = e.touches.item(0);
   
      log.innerHTML =
         '<strong>pageX:</strong> ' + pTarget.pageX +
         '<br><strong>pageY:</strong> ' + pTarget.pageY +
         '<br><strong>clientX:</strong> ' + pTarget.clientX +
         '<br><strong>clientY:</strong> ' + pTarget.clientY +
         '<br><strong>screenX:</strong> ' + pTarget.screenX +
         '<br><strong>screenY:</strong> ' + pTarget.screenY;
   
      e.preventDefault();
   }
</script>


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

学习如何控制多个并发的触摸事件提高了应用程序的用户交互:

[*]定义你想要的元素触发触摸事件。 在这种情况下,一个地区一个文本定义为一个元素。<div id="touchable"> Touch this box with two finger. </div>
[*]添加一个事件侦听器和处理程序 touchstart事件定义的元素: <script>
   var touchable = document.getElementById("touchable");
   
   /* touchstart event */
   touchable.addEventListener("touchstart", touchStartHandler, false);
   
   function touchStartHandler(e)
   {
      /* Return if there is no multi-point touch */
      if (e.touches.length < 2) return;

      var width = Math.abs(e.touches.item(0).clientX - e.touches.item(1).clientX);      
      var height = Math.abs(e.touches.item(0).clientY - e.touches.item(1).clientY);
      
      /* Create a new image object instance */
      var tizenLogo = document.createElement("img");                  
      tizenLogo.setAttribute("src", "sample_image.png");
      tizenLogo.setAttribute("width", width);
      tizenLogo.setAttribute("height", height);
      tizenLogo.style.position = "absolute";
      
      /* Assign the position where the image is shown based on the touch point */
      tizenLogo.style.left = (e.touches.item(0).pageX + e.touches.item(1).pageX - width) / 2 + "px";
      tizenLogo.style.top = (e.touches.item(0).pageY + e.touches.item(1).pageY - height) / 2 + "px";
      
      this.appendChild(tizenLogo);
   }   
</script>


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

加强触摸响应能力隐藏

避免延误单一利用姿态,可以使页面不能攀登的,或修改触摸反应:

[*]页面不能攀登的:
如果一个页面不能攀登的,手势是手势缩放不需要,所以单一利用手势可以及时处理。 页面不能攀登的,使用 viewport meta标签:
<meta name="viewport"
      content="width=device-width, initial-scale=1.0, minimum-scale=1.0,
               maximum-scale=1.0, user-scalable=0">修改接触反应事件发生时立即当碰触点被释放,使其速度比水龙头事件。 然而,事件发生时即使碰触点移动之前释放。

[*]为了避免处理手势触摸点移动时,检查是否感动的一点是通过设置一个标志的移动 touchmove () 事件处理程序:<a id="test" href="#">Click test using touch event</a>
<div id="log"></div>
<script>
   var moved = false;

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

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

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

      return false;
   });
</script>

[*]为了避免激活点击事件后触摸事件,设置返回类型 false。
[*]你也可以使用 vclick 由 jQuery 移动提供的事件 vclick 事件是基于触摸事件和生成仅当感动的点不移。<a id="test" href="#">Click test using touch event</a>
<div id="log"></div>
<script>
   $('#test').on('vclick', function(e)
   {
      $('#log').html("Test link is clicked!");

      return false;
   });
</script>

页: [1]
查看完整版本: Tizen触摸事件版本 1: 控制触摸事件