ホームページ > 記事 > ウェブフロントエンド > HTML5で画面ジェスチャーロック解除機能を作成
時代の発展に伴い、HTML5は一部の人々に愛され、開発プロセスに不可欠なプログラミング言語でもあります。 HTML5 自体は W3C によって推奨されており、その開発は Google、Apple、Nokia、China Mobile などの数百社によって生み出された技術です。この技術の最大の利点は、オープンな技術であることです。言い換えれば、あらゆる公的標準は W3C データベースにまで遡ることができます。一方、W3C によって採用された HTML5 標準は、すべてのブラウザまたはすべてのプラットフォームがそれを実装することを意味します。このセクションでは、HTML5 を使用して画面ジェスチャのロック解除機能を作成するチュートリアルについて説明します。
実装原理 HTML5キャンバスを使用してロックが解除されたサークルを描画し、タッチイベントを使用してこれらのサークルのロックを解除し、コードを直接確認します。
function createCircle() {// 创建解锁点的坐标,根据canvas的大小来平均分配半径 var n = chooseType;// 画出n*n的矩阵 lastPoint = []; arr = []; restPoint = []; r = ctx.canvas.width / (2 + 4 * n);// 公式计算 半径和canvas的大小有关 for (var i = 0 ; i < n ; i++) { for (var j = 0 ; j < n ; j++) { arr.push({ x: j * 4 * r + 3 * r, y: i * 4 * r + 3 * r }); restPoint.push({ x: j * 4 * r + 3 * r, y: i * 4 * r + 3 * r }); } } //return arr; }
キャンバスに円を描画した後、イベントバインドを実行できます
function bindEvent() { can.addEventListener("touchstart", function (e) { var po = getPosition(e); console.log(po); for (var i = 0 ; i < arr.length ; i++) { if (Math.abs(po.x - arr[i].x) < r && Math.abs(po.y - arr[i].y) < r) { // 用来判断起始点是否在圈圈内部 touchFlag = true; drawPoint(arr[i].x,arr[i].y); lastPoint.push(arr[i]); restPoint.splice(i,1); break; } } }, false); can.addEventListener("touchmove", function (e) { if (touchFlag) { update(getPosition(e)); } }, false); can.addEventListener("touchend", function (e) { if (touchFlag) { touchFlag = false; storePass(lastPoint); setTimeout(function(){ init(); }, 300); } }, false); }
次に、最も重要なステップは、touchmoveイベントのmoveToメソッドとlineToメソッドの連続トリガーを通じて、ロック解除パスロジックを描画することです。キャンバスは割引を描画するために呼び出され、同時に描画した円に到達するかどうかを判断します。ここで、 lastPoint は正しい円のパスを保存し、restPoint は正しいパスを削除した後の残りのすべての円を保存します。更新メソッド:
function update(po) {// 核心变换方法在touchmove时候调用 ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); for (var i = 0 ; i < arr.length ; i++) { // 每帧先把面板画出来 drawCle(arr[i].x, arr[i].y); } drawPoint(lastPoint);// 每帧花轨迹 drawLine(po , lastPoint);// 每帧画圆心 for (var i = 0 ; i < restPoint.length ; i++) { if (Math.abs(po.x - restPoint[i].x) < r && Math.abs(po.y - restPoint[i].y) < r) { drawPoint(restPoint[i].x, restPoint[i].y); lastPoint.push(restPoint[i]); restPoint.splice(i, 1); break; } } }
最後のステップは、パス内の lastPoint によって保存された配列をパスワードに変換し、それをロック解除検証関数の処理に使用します。 // touchend終了後、パスワードとステータスを変更します。 処理中
if (pswObj.step == 1) { if (checkPass(pswObj.fpassword, psw)) { pswObj.step = 2; pswObj.spassword = psw; document.getElementById('title').innerHTML = '密码保存成功'; drawStatusPoint('#2CFF26'); window.localStorage.setItem('passwordx', JSON.stringify(pswObj.spassword)); window.localStorage.setItem('chooseType', chooseType); } else { document.getElementById('title').innerHTML = '两次不一致,重新输入'; drawStatusPoint('red'); delete pswObj.step; } } else if (pswObj.step == 2) { if (checkPass(pswObj.spassword, psw)) { document.getElementById('title').innerHTML = '解锁成功'; drawStatusPoint('#2CFF26'); } else { drawStatusPoint('red'); document.getElementById('title').innerHTML = '解锁失败'; } } else { pswObj.step = 1; pswObj.fpassword = psw; document.getElementById('title').innerHTML = '再次输入'; } }コンポーネントのロック解除 このHTML5のロック解除をコンポーネントに記述し、https://github.com/lvming6816077/H5lock 上記はチュートリアルです。 HTML5 を使用してロック解除機能を実装する方法を練習できます。 関連する推奨事項:
html5 を使用して Web ミュージック プレーヤーを作成する方法
iPhoneでhtml5ビデオタグが自動的に全画面表示されないようにする方法
以上がHTML5で画面ジェスチャーロック解除機能を作成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。