Maison interface Web uni-app Comment implémenter la fonction de mot de passe gestuel dans Uniapp

Comment implémenter la fonction de mot de passe gestuel dans Uniapp

Jul 04, 2023 am 10:37 AM
uniapp 实现 手势密码

Comment implémenter la fonction de mot de passe gestuel dans uniapp

Le mot de passe gestuel est un moyen courant de déverrouiller les téléphones mobiles et peut également être utilisé dans les applications mobiles développées par uniapp. Dans uniapp, nous pouvons utiliser Canvas pour tracer des chemins gestuels et implémenter la fonction de mot de passe gestuel en surveillant les opérations gestuelles de l'utilisateur. Cet article expliquera comment implémenter la fonction de mot de passe gestuel dans uniapp et fournira des exemples de code pertinents.

  1. Créer la structure de la page

Tout d'abord, nous devons créer une structure de page qui contient l'élément canevas. Créez un nouveau dossier GestureLock dans le répertoire des pages et créez le fichier GestureLock.vue dans ce dossier. Dans le fichier GestureLock.vue, ajoutez le code suivant :

<template>
  <view class="container">
    <canvas 
      ref="gestureCanvas" 
      canvas-id="gestureCanvas"
      :style="{ width: '100%', height: '100%' }"
    ></canvas>
  </view>
</template>

<script>
export default {
  onLoad() {
    const query = uni.createSelectorQuery().in(this);
    query.select('.container')
      .boundingClientRect((res) => {
        const canvasWidth = res.width;
        const canvasHeight = res.height;
        this.canvasWidth = canvasWidth;
        this.canvasHeight = canvasHeight;
        this.ctx = uni.createCanvasContext('gestureCanvas');

        // 绘制初始画面
        this.drawBackground();
      })
      .exec();
  },
  methods: {
    // 绘制背景
    drawBackground() {
      this.ctx.setFillStyle('#F5F5F5');
      this.ctx.fillRect(0, 0, this.canvasWidth, this.canvasHeight);
      this.ctx.draw();
    },
  },
};
</script>

<style>
.container {
  width: 100vw;
  height: 100vh;
}
</style>
Copier après la connexion

Dans le code ci-dessus, nous avons ajouté un élément canvas à la page et spécifié le nom de référence de l'élément comme gesteCanvas via l'attribut ref. Et l'identifiant de l'élément canvas est spécifié sous la forme gesteCanvas via l'attribut canvas-id. Dans la méthode onLoad du composant, nous utilisons uni.createSelectorQuery().in(this) pour obtenir la largeur et la hauteur de l'élément canevas et les stocker dans les données du composant. Dans les méthodes du composant, nous définissons une méthode de dessin d'arrière-plan drawBackground(), qui est utilisée pour dessiner un arrière-plan gris sur le canevas.

  1. Surveillance des opérations gestuelles

Ensuite, nous devons surveiller les opérations gestuelles de l'utilisateur, y compris la pression, le mouvement et le relâchement des doigts. Nous pouvons réaliser cette fonction grâce aux événements gestuels d'uniapp. Dans les méthodes du fichier GestureLock.vue, ajoutez le code suivant :

methods: {
  // ...

  // 手指按下事件
  onTouchStart(event) {
    const touch = event.touches[0];
    const startX = touch.clientX;
    const startY = touch.clientY;
    // ...
  },

  // 手指移动事件
  onTouchMove(event) {
    const touch = event.touches[0];
    const moveX = touch.clientX;
    const moveY = touch.clientY;
    // ...
  },

  // 手指松开事件
  onTouchEnd() {
    // ...
  },
},
Copier après la connexion

Dans le code ci-dessus, trois méthodes sont ajoutées aux méthodes, correspondant à l'événement de pression du doigt, à l'événement de déplacement du doigt et à l'événement de relâchement du doigt. Dans l'événement de pression du doigt, nous obtenons la position actuelle du doigt via event.touches[0] et la stockons dans les variables startX et startY pour une utilisation ultérieure. Dans l'événement de mouvement du doigt, nous obtenons la position actuelle du doigt via event.touches[0] et la stockons dans les variables moveX et moveY pour une utilisation ultérieure. Lors de l'événement de libération du doigt, nous pouvons vérifier le mot de passe du geste.

  1. Dessinez le chemin du geste

Ensuite, nous devons dessiner le chemin du geste sur la toile. Dans les méthodes du fichier GestureLock.vue, ajoutez le code suivant :

methods: {
  // ...

  // 绘制手势路径
  drawGesturePath() {
    this.ctx.clearRect(0, 0, this.canvasWidth, this.canvasHeight);
    this.drawBackground();
    
    // ...

    this.ctx.setStrokeStyle('#337ab7');
    this.ctx.setLineWidth(3);
    this.ctx.setLineCap('round');
    this.ctx.setLineJoin('round');

    for (let i = 0; i < this.gesturePath.length - 1; i++) {
      const pointA = this.gesturePath[i];
      const pointB = this.gesturePath[i + 1];

      this.ctx.beginPath();
      this.ctx.moveTo(pointA.x, pointA.y);
      this.ctx.lineTo(pointB.x, pointB.y);
      this.ctx.stroke();
    }

    this.ctx.draw(true);
  },
},
Copier après la connexion

Dans le code ci-dessus, dans la méthode drawGesturePath, on utilise d'abord la méthode this.ctx.clearRect() pour effacer le contenu sur le canevas, puis appelez la méthode drawBackground pour dessiner un arrière-plan gris. Ensuite, nous utilisons la méthode this.ctx.setStrokeStyle() pour définir la couleur de la ligne, utilisons la méthode this.ctx.setLineWidth() pour définir la largeur de la ligne, utilisons la méthode this.ctx.setLineCap() pour définissez le style de point de terminaison de la ligne et utilisez-le. La méthode ctx.setLineJoin() définit le style de connexion de la ligne. Ensuite, en parcourant le tableau gestePath, chaque segment de ligne du chemin gestuel est dessiné en séquence. Enfin, utilisez la méthode this.ctx.draw(true) pour afficher le contenu dessiné sur le canevas en temps réel.

  1. Mise en œuvre complète de la fonction de mot de passe gestuel

Enfin, nous intégrons les codes précédents pour réaliser la fonction complète de mot de passe gestuel. Dans le fichier GestureLock.vue, ajoutez le code suivant :

<template>
  <view class="container">
    <canvas 
      ref="gestureCanvas" 
      canvas-id="gestureCanvas"
      :style="{ width: '100%', height: '100%' }"
      @touchstart="onTouchStart"
      @touchmove="onTouchMove"
      @touchend="onTouchEnd"
    ></canvas>
  </view>
</template>

<script>
export default {
  data() {
    return {
      canvasWidth: 0,
      canvasHeight: 0,
      ctx: null,
      startX: 0,
      startY: 0,
      moveX: 0,
      moveY: 0,
      gesturePath: [], // 手势路径的点集合
    };
  },
  onLoad() {
    const query = uni.createSelectorQuery().in(this);
    query.select('.container')
      .boundingClientRect((res) => {
        const canvasWidth = res.width;
        const canvasHeight = res.height;
        this.canvasWidth = canvasWidth;
        this.canvasHeight = canvasHeight;
        this.ctx = uni.createCanvasContext('gestureCanvas');

        // 绘制初始画面
        this.drawBackground();
      })
      .exec();
  },
  methods: {
    // 绘制背景
    drawBackground() {
      this.ctx.setFillStyle('#F5F5F5');
      this.ctx.fillRect(0, 0, this.canvasWidth, this.canvasHeight);
      this.ctx.draw();
    },

    // 手指按下事件
    onTouchStart(event) {
      const touch = event.touches[0];
      this.startX = touch.clientX;
      this.startY = touch.clientY;
      this.gesturePath.push({ x: this.startX, y: this.startY });
    },

    // 手指移动事件
    onTouchMove(event) {
      const touch = event.touches[0];
      this.moveX = touch.clientX;
      this.moveY = touch.clientY;
      this.gesturePath.push({ x: this.moveX, y: this.moveY });
      this.drawGesturePath();
    },

    // 手指松开事件
    onTouchEnd() {
      // 进行手势密码的验证
      console.log(this.gesturePath);
    },

    // 绘制手势路径
    drawGesturePath() {
      this.ctx.clearRect(0, 0, this.canvasWidth, this.canvasHeight);
      this.drawBackground();

      this.ctx.setStrokeStyle('#337ab7');
      this.ctx.setLineWidth(3);
      this.ctx.setLineCap('round');
      this.ctx.setLineJoin('round');

      for (let i = 0; i < this.gesturePath.length - 1; i++) {
        const pointA = this.gesturePath[i];
        const pointB = this.gesturePath[i + 1];

        this.ctx.beginPath();
        this.ctx.moveTo(pointA.x, pointA.y);
        this.ctx.lineTo(pointB.x, pointB.y);
        this.ctx.stroke();
      }

      this.ctx.draw(true);
    },
  },
};
</script>

<style>
.container {
  width: 100vw;
  height: 100vh;
}
</style>
Copier après la connexion

Dans le code ci-dessus, nous avons ajouté trois écouteurs d'événements gestuels sur l'élément canvas : @touchstart, @touchmove et @touchend. Dans la méthode de traitement d'événements correspondante, nous avons effectué des opérations associées, notamment l'obtention et la sauvegarde des positions des doigts, le dessin et la mise à jour en temps réel des trajectoires gestuelles, etc. Lors de l'événement de relâchement du doigt, nous pouvons vérifier le mot de passe du geste, par exemple en déterminant si le chemin du geste tracé par l'utilisateur répond aux exigences ou est cohérent avec le mot de passe du geste prédéfini.

Grâce aux étapes ci-dessus, nous pouvons implémenter la fonction de mot de passe gestuel dans uniapp. Lorsque l'utilisateur appuie sur son doigt et le déplace, le chemin gestuel sera affiché sur la toile en temps réel ; lorsque l'utilisateur relâche son doigt, nous pouvons effectuer les opérations de vérification correspondantes basées sur le chemin gestuel. J'espère que cet article vous aidera à implémenter la fonction de mot de passe gestuel dans uniapp. Si vous avez des questions, veuillez laisser un message pour discussion.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment mettre en œuvre la double connexion WeChat sur les téléphones mobiles Huawei ? Comment mettre en œuvre la double connexion WeChat sur les téléphones mobiles Huawei ? Mar 24, 2024 am 11:27 AM

Comment mettre en œuvre la double connexion WeChat sur les téléphones mobiles Huawei ? Avec l’essor des réseaux sociaux, WeChat est devenu l’un des outils de communication indispensables dans la vie quotidienne des gens. Cependant, de nombreuses personnes peuvent rencontrer un problème : se connecter à plusieurs comptes WeChat en même temps sur le même téléphone mobile. Pour les utilisateurs de téléphones mobiles Huawei, il n'est pas difficile d'obtenir une double connexion WeChat. Cet article explique comment obtenir une double connexion WeChat sur les téléphones mobiles Huawei. Tout d'abord, le système EMUI fourni avec les téléphones mobiles Huawei offre une fonction très pratique : l'ouverture d'une double application. Grâce à la fonction de double ouverture de l'application, les utilisateurs peuvent simultanément

Guide de programmation PHP : méthodes pour implémenter la séquence de Fibonacci Guide de programmation PHP : méthodes pour implémenter la séquence de Fibonacci Mar 20, 2024 pm 04:54 PM

Le langage de programmation PHP est un outil puissant pour le développement Web, capable de prendre en charge une variété de logiques et d'algorithmes de programmation différents. Parmi eux, l’implémentation de la séquence de Fibonacci est un problème de programmation courant et classique. Dans cet article, nous présenterons comment utiliser le langage de programmation PHP pour implémenter la séquence de Fibonacci et joindrons des exemples de code spécifiques. La suite de Fibonacci est une suite mathématique définie comme suit : le premier et le deuxième élément de la suite valent 1, et à partir du troisième élément, la valeur de chaque élément est égale à la somme des deux éléments précédents. Les premiers éléments de la séquence

Comment démarrer l'aperçu du projet Uniapp développé par Webstorm Comment démarrer l'aperçu du projet Uniapp développé par Webstorm Apr 08, 2024 pm 06:42 PM

Étapes pour lancer l'aperçu du projet UniApp dans WebStorm : Installer le plugin UniApp Development Tools Se connecter aux paramètres de l'appareil Aperçu du lancement de WebSocket

Lequel est le meilleur, uniapp ou mui ? Lequel est le meilleur, uniapp ou mui ? Apr 06, 2024 am 05:18 AM

De manière générale, uni-app est préférable lorsque des fonctions natives complexes sont nécessaires ; MUI est meilleur lorsque des interfaces simples ou hautement personnalisées sont nécessaires. De plus, uni-app possède : 1. Prise en charge de Vue.js/JavaScript ; 2. Composants/API natifs riches 3. Bon écosystème ; Les inconvénients sont : 1. Problèmes de performances ; 2. Difficulté à personnaliser l'interface ; MUI a : 1. Prise en charge de la conception matérielle ; 2. Grande flexibilité ; 3. Bibliothèque étendue de composants/thèmes. Les inconvénients sont : 1. Dépendance CSS ; 2. Ne fournit pas de composants natifs ; 3. Petit écosystème ;

Comment implémenter la fonction de clonage WeChat sur les téléphones mobiles Huawei Comment implémenter la fonction de clonage WeChat sur les téléphones mobiles Huawei Mar 24, 2024 pm 06:03 PM

Comment mettre en œuvre la fonction de clonage WeChat sur les téléphones mobiles Huawei Avec la popularité des logiciels sociaux et l'importance croissante accordée à la confidentialité et à la sécurité, la fonction de clonage WeChat est progressivement devenue le centre d'attention. La fonction de clonage WeChat peut aider les utilisateurs à se connecter simultanément à plusieurs comptes WeChat sur le même téléphone mobile, ce qui facilite la gestion et l'utilisation. Il n'est pas difficile de mettre en œuvre la fonction de clonage WeChat sur les téléphones mobiles Huawei. Il vous suffit de suivre les étapes suivantes. Étape 1 : Assurez-vous que la version du système de téléphonie mobile et la version de WeChat répondent aux exigences. Tout d'abord, assurez-vous que la version de votre système de téléphonie mobile Huawei a été mise à jour vers la dernière version, ainsi que l'application WeChat.

Quels outils de développement uniapp utilise-t-il ? Quels outils de développement uniapp utilise-t-il ? Apr 06, 2024 am 04:27 AM

UniApp utilise HBuilder

Quels sont les inconvénients d'Uniapp Quels sont les inconvénients d'Uniapp Apr 06, 2024 am 04:06 AM

UniApp présente de nombreux avantages en tant que cadre de développement multiplateforme, mais ses inconvénients sont également évidents : les performances sont limitées par le mode de développement hybride, ce qui entraîne une vitesse d'ouverture, un rendu des pages et une réponse interactive médiocres. L'écosystème est imparfait et il existe peu de composants et de bibliothèques dans des domaines spécifiques, ce qui limite la créativité et la réalisation de fonctions complexes. Les problèmes de compatibilité sur différentes plates-formes sont sujets à des différences de style et à une prise en charge incohérente des API. Le mécanisme de sécurité de WebView est différent de celui des applications natives, ce qui peut réduire la sécurité des applications. Les versions et mises à jour d'applications prenant en charge plusieurs plates-formes en même temps nécessitent plusieurs compilations et packages, ce qui augmente les coûts de développement et de maintenance.

Quelles sont les bases nécessaires pour apprendre Uniapp ? Quelles sont les bases nécessaires pour apprendre Uniapp ? Apr 06, 2024 am 04:45 AM

Le développement d'Uniapp nécessite les bases suivantes : technologie front-end (HTML, CSS, JavaScript) connaissance du développement mobile (plateformes iOS et Android) autres bases de Node.js (outils de contrôle de version, IDE, simulateur de développement mobile ou expérience réelle du débogage machine)

See all articles