詳細はクリックしてください
エフェクト表示
実装原理
ロック解除された円を描画するには、HTML5キャンバスを使用しますこれらのサークルのロックを解除するには、イベントをタッチします。コード。
- function createCircle() {// ロック解除ポイントの座標を作成し、キャンバスのサイズに従って半径を均等に分配します
-
- var n =chooseType;// n*n 行列を描画します
- lastPoint = [];
- arr = [];
- restPoint = [];
- r = ctx.canvas.width / (2 + 4 * n);// 式の計算半径はサイズに関連します(var i = 0; i< n; i ++){
3 * r、- *r
-
- コードのコードの
-
-
-
-
-
-
- キャンバスの円が描かれた後、イベントバインディングが可能です
-
- function bindingEvent() {
- can.addEventListener("touchstart", function (e) {
- var po = getPosition(e);
- console.log(po);
- for (var i = 0 ; i
- if (Math.abs(po.x - arr[i].x) && 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イベントの不断接触発行,调用canvasのmoveToメソッドとlineToメソッドを使って描画します,同時に私が到達したかどうかを判断します画の圈圈里面、その中に lastPoint は正しい圈路を保持し、restPoint はすべての圈圈削除正圈路の後に残ります。時刻调用
ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
for (var i = 0 ;私は<配列の長さ ; i++) { // 每帧先握面板画出来-
drawCle(arr[i].x, arr[i].y);-
}-
-
drawPoint(lastPoint);// 每帧花轨迹-
ドローライン(PO、lastPoint); // ].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 によって保存された配列をパスワードに変換してローカルストレージに保存します。これはロック解除の検証ロジックの処理に使用されます。
- function storePass(psw) {//タッチエンド終了後のパスワードとステータスの処理
- if (pswObj.step == 1) {
- if (checkPass(pswObj.fpassword , psw)) {
- pswObj.step = 2; pswObj.spassword = pswObj.step = ';
drawStatusPoint('#2CFF26'); .setItem('passwordx', JSON.stringify(pswObj.spassword));-
window.localStorage.set (('chooseType',chooseType)); document.getElementById('title').innerHTML = '2 回矛盾しています、再入力'; - 、 psw)) {
- document.getElementById('title') drawStatus。 Point('red');
- document.getElementById('title').innerHTML = 'ロック解除に失敗しました'; j.fpassword = psw;
- document.getElementById('title') .innerHTML = 'Enter again'; ML5 のロック解除はコンポーネントとして記述され、https://github に配置されています。チーム: http://www. loyteam.com/2015/07 ... u-shou-shi-jie-suo/
-
-
HTML5 コンテンツの詳細については、-
-
をクリックしてください。