ホームページ ウェブフロントエンド H5 チュートリアル HTML5で画面ジェスチャーロック解除機能を作成

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

Nov 20, 2017 pm 02:39 PM
h5 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 ミュージック プレーヤーを作成する方法

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

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

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

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

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

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

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

HTML のネストされたテーブル HTML のネストされたテーブル Sep 04, 2024 pm 04:49 PM

HTML のネストされたテーブル

HTMLの表の境界線 HTMLの表の境界線 Sep 04, 2024 pm 04:49 PM

HTMLの表の境界線

HTML 左マージン HTML 左マージン Sep 04, 2024 pm 04:48 PM

HTML 左マージン

HTML テーブルのレイアウト HTML テーブルのレイアウト Sep 04, 2024 pm 04:54 PM

HTML テーブルのレイアウト

HTML 内のテキストの移動 HTML 内のテキストの移動 Sep 04, 2024 pm 04:45 PM

HTML 内のテキストの移動

HTML 順序付きリスト HTML 順序付きリスト Sep 04, 2024 pm 04:43 PM

HTML 順序付きリスト

HTML の onclick ボタン HTML の onclick ボタン Sep 04, 2024 pm 04:49 PM

HTML の onclick ボタン

HTML入力プレースホルダー HTML入力プレースホルダー Sep 04, 2024 pm 04:54 PM

HTML入力プレースホルダー

See all articles