|
处理拖放事件
在拖放数据传输
相关信息
本教程演示了如何在Tizen使用拖放。
注意: 这个功能只支持移动应用程序。
热身
熟悉HTML5拖拽API通过学习基本知识: 处理拖放事件创建可拖动元素和事件监听器来跟踪拖放事件。
在拖放数据传输做一个简单的谜题和拖拽把拼图块。
- 处理拖放事件隐藏
学习如何处理拖放事件是一个基本用户交互技巧:
- 通过添加定义可拖动元素 draggable="true"属性:
- <h1>Drag and drop tutorial</h1>
- <div class="example_body">
- <div id="drag-list">
- <div class="drag-row" draggable="true">1</div>
- <div class="drag-row" draggable="true">2</div>
- </div>
- <div>Drag state: <span id="log"></span></div>
- </div>
复制代码 2.为各种拖放事件添加事件监听器:
- <script>
- var cols = document.querySelectorAll('#drag-list_.drag-row');
- var colsLength = cols.length;
- for (var i = 0; i < colsLength; i++)
- {
- cols[i].addEventListener('dragstart', dragStart, false);
- cols[i].addEventListener('drag', dragIng, false);
- cols[i].addEventListener('dragenter', dragEnter, false);
- cols[i].addEventListener('dragover', dragOver, false);
- cols[i].addEventListener('dragleave', dragLeave, false);
- cols[i].addEventListener('drop', dragDrop, false);
- cols[i].addEventListener('dragend', dragEnd, false);
- };
- </script>
复制代码 3.定义事件处理程序的事件。 在这种情况下,每个事件处理程序在屏幕上显示文本。
- function dragIng(e)
- {
- log.innerHTML = "drag"
- };
- function dragOver(e)
- {
- e.preventDefault();
- log.innerHTML = "dragOver"
- };
- function dragEnter(e)
- {
- log.innerHTML = "dragEnter"
- };
- function dragLeave(e)
- {
- log.innerHTML = "dragLeave"
- };
- function dragDrop(e)
- {
- e.stopPropagation();
- log.innerHTML = "dragDrop"
- };
-
- function dragEnd(e)
- {
- log.innerHTML = "dragEnd"
- };
复制代码 源代码这个用例相关的完整源代码,看到下面的文件:
在拖放数据传输隐藏
学习如何传输数据在一个简单的拖放拼图是一个基本用户交互技巧:
- 通过添加定义可拖动元素 draggable="true"属性。
在这个例子中,Tizen标志形象已经分裂,随机分配。 每个成像仪部分被定义为可拖动,这样用户可以按照正确的顺序重新排列的图像部分。
- <div class="example_body">
- <div>Drag state: <span id="log"></span></div>
- <div class="holder">
- <div>
- <img src="images/logo.png">
- <p class="txt">Complete the puzzle to see a picture</p>
- </div>
- <ul id="puzzle">
- <li class="puzzle-piece" draggable="true">
- <img src="images/puzz_06.png">
- </li>
- <li class="puzzle-piece" draggable="true">
- <img src="images/puzz_02.png">
- </li>
- <li class="puzzle-piece" draggable="true">
- <img src="images/puzz_04.png">
- </li>
- <li class="puzzle-piece" draggable="true">
- <img src="images/puzz_05.png">
- </li>
- <li class="puzzle-piece" draggable="true">
- <img src="images/puzz_01.png">
- </li>
- <li class="puzzle-piece" draggable="true">
- <img src="images/puzz_03.png">
- </li>
- </ul>
- </div>
- </div>
复制代码 2.添加事件监听器 dragover , dragleave , dragstart , drop 事件:
- <script>
- var cols = document.querySelectorAll('#puzzle_.puzzle-piece');
- var colsLength = cols.length;
- for (var i = 0; i < colsLength; i++)
- {
- cols[i].addEventListener('dragstart', dragStartHandler, false);
- cols[i].addEventListener('dragover', dragOverHandler, false);
- cols[i].addEventListener('dragleave', dragLeaveHandler, false);
- cols[i].addEventListener('drop', dragDropHandler, false);
- };
- </script>
复制代码 (在这种情况下,图像传输数据部分):
- 声明 dragElem 变量,这是一个空对象的数据交换:
2.使用 DataTransfer接口的 dragStartHandler () 和 dragDropHandler () 事件处理程序交换图像部分:
- function dragStartHandler(e)
- {
- /* Set data */
- dragElem = this;
- e.dataTransfer.effectAllowed = 'move';
- e.dataTransfer.setData('text/html', this.innerHTML);
- this.classList.add('over');
- for (var i = 0; i < colsLength; i++)
- {
- cols[i].classList.add('start');
- };
- };
- function dragDropHandler(e)
- {
- /* Get data */
- dragElem.innerHTML = this.innerHTML;
- this.innerHTML = e.dataTransfer.getData('text/html');
- for (var i = 0; i < colsLength; i++)
- {
- cols[i].className = "puzzle-piece";
- };
- /* Check key */
- puzzleCheck();
- };
复制代码 3.检查完成的拼图,用户主要使用一个简单的数组,并比较用户密钥对拼图密钥(正确答案): - var puzzleKey = ["01", "02", "03", "04", "05", "06"];
- var puzzleArray = [];
- function puzzleCheck()
- {
- /* Initialize the user key */
- puzzleArray = [];
- /* Insert the keys in the array */
- for (var i = 0; i < colsLength; i++)
- {
- puzzleArray.push(cols[i].children[0].getAttribute('src').substring(12, 14));
- };
- originKey = puzzleKey.join();
- userKey = puzzleArray.join();
- if (originKey === userKey)
- {
- alert("Success !");
- };
- };
复制代码 图:拖拽难题
源代码这个用例相关的完整源代码,看到下面的文件:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|