ホームページ  >  記事  >  ウェブフロントエンド  >  HTML5で画面ジェスチャーロック解除機能を作成

HTML5で画面ジェスチャーロック解除機能を作成

小云云
小云云オリジナル
2017-11-20 14:39:562393ブラウズ

時代の発展に伴い、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(&#39;title&#39;).innerHTML = &#39;密码保存成功&#39;;
                drawStatusPoint(&#39;#2CFF26&#39;);
                window.localStorage.setItem(&#39;passwordx&#39;, JSON.stringify(pswObj.spassword));
                window.localStorage.setItem(&#39;chooseType&#39;, chooseType);
            } else {
                document.getElementById(&#39;title&#39;).innerHTML = &#39;两次不一致,重新输入&#39;;
                drawStatusPoint(&#39;red&#39;);
                delete pswObj.step;
            }
        } else if (pswObj.step == 2) {
            if (checkPass(pswObj.spassword, psw)) {
                document.getElementById(&#39;title&#39;).innerHTML = &#39;解锁成功&#39;;
                drawStatusPoint(&#39;#2CFF26&#39;);
            } else {
                drawStatusPoint(&#39;red&#39;);
                document.getElementById(&#39;title&#39;).innerHTML = &#39;解锁失败&#39;;
            }
        } else {
            pswObj.step = 1;
            pswObj.fpassword = psw;
            document.getElementById(&#39;title&#39;).innerHTML = &#39;再次输入&#39;;
        }
 
    }

コンポーネントのロック解除

このHTML5のロック解除をコンポーネントに記述し、https://github.com/lvming6816077/H5lock

上記はチュートリアルです。 HTML5 を使用してロック解除機能を実装する方法を練習できます。

関連する推奨事項:

html5 を使用して Web ミュージック プレーヤーを作成する方法

html5 キャンバスでハートを描く方法の例

html5 テキスト スクロールのコード例

html5 で雪のエフェクトを作成する方法

iPhoneでhtml5ビデオタグが自動的に全画面表示されないようにする方法

以上がHTML5で画面ジェスチャーロック解除機能を作成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。