Table des matières
Opération glisser
Reconnaissance gestuelle
Maison Applet WeChat Développement de mini-programmes Bases du développement de mini-programmes : opération coulissante (10)

Bases du développement de mini-programmes : opération coulissante (10)

Apr 25, 2017 am 09:45 AM

Dans la méthode d'interaction actuelle des applications mobiles, la plus courante est l'opération de glissement. Glisser vers la gauche et la droite pour changer de page, écarter les doigts pour agrandir les images, etc. se font tous par des opérations de glissement.

Les événements pertinents fournis par défaut par l'applet WeChat sont les suivants :

Bases du développement de mini-programmes : opération coulissante (10)

Événements d'opération liés au toucher

tapCorrespondant aux opérations de clic, longtap est également fourni pour prendre en charge les opérations d'appui long. Celles-ci sont relativement simples, je n'entrerai donc pas dans les détails.
touchmove correspond à l'opération de glissement, et vous pouvez répondre à l'opération de glissement via bindtouchmove.

//wxml
<view id="id" bindtouchmove="handletouchmove" style = "width : 100px; height : 100px; background : #167567;">
</view>

//js
Page({
  handletouchmove: function(event) {
    console.log(event)
  },
})
Copier après la connexion

Lorsque vous appuyez et maintenez l'étiquette view et faites glisser la souris, l'événement de glissement sera déclenché en continu jusqu'à ce que la souris soit relâchée Lorsque la souris sort du view. zone d'étiquette, l'événement sera toujours déclenché .

Opération glisser

En écoutant les événements de glissement, certaines fonctions pratiques peuvent être implémentées. Par exemple, les utilisateurs qui ont utilisé l'iPhone connaissent assistivetouch, un bouton de raccourci sur le bureau, qui permet de faire glisser le bouton. vers n'importe où sur le bureau. Pour plus de commodité, un cercle est utilisé pour représenter le bouton.

//wxml
<view id="id" class = "ball" bindtouchmove="handletouchmove" style = "width : 60px; height : 60px; background : #545345;">
</view>

//wxss
.ball {
  box-shadow:2px 2px 10px #AAA;
  border-radius: 20px;
  position: absolute; 
}

//js
Page({
  handletouchmove: function(event) {
    console.log(event)
  },
})
Copier après la connexion

Bases du développement de mini-programmes : opération coulissante (10)

Voir les suivis


Eh bien, le bouton est un peu moche, mais ce n'est pas le sujet. L'idée de mise en œuvre de l'opération glisser-déposer est également très simple. Lorsqu'un événement coulissant est déclenché, l'objet événement contiendra les informations de coordonnées de la position tactile actuelle, qui peuvent être obtenues via event.touches[0].pageX et event.touches[0].pageY. est-ce que touche un tableau ? La réponse est de prendre en charge plusieurs Touch (je ne sais pas comment simuler le multi-touch sur un ordinateur). Ensuite, réglez la position du bouton sur la position tactile, ce qui devrait obtenir l'effet souhaité. Essayons.

Définissez les données de position du bouton ballBottom et ballRight dans la page et liez-les aux attributs correspondants de la vue.

//wxml
<view id="id" class = "ball" bindtouchmove="handletouchmove" style = "width : 60px; height : 60px; background : #545345; top:{{ballTop}}px; left: {{ballLeft}}px">
</view>

//js
Page({
  data: {
    ballTop: 0,
    ballLeft: 0,
  },
  handletouchmove: function(event) {
    console.log(event)
  },
})
Copier après la connexion

Ensuite, mettez à jour les données de position du bouton dans la méthode handletouchmove

handletouchmove: function(event) {
  console.log(event)
  this.setData ({
    ballTop: event.touches[0].pageY,
    ballLeft: event.touches[0].pageX,
  });
},
Copier après la connexion

On constate que l'effet peut fondamentalement être obtenu, mais il y a deux problèmes. La première est que le bouton sera déplacé hors du bord de l’écran et que le deuxième bouton sera toujours en bas à droite de la souris.
Ensuite, ajoutez un jugement sur les limites de l'écran et corrigez la position du bouton. La taille de l'écran peut être obtenue via wx.getSystemInfo.
Le code complet est le suivant :

Page({
  data: {
    ballTop: 0,
    ballLeft: 0,
    screenHeight:0,
    screenWidth:0

  },
  onLoad: function () {
      //获取屏幕宽高
    var _this = this;
    wx.getSystemInfo({
     success: function (res) {
        _this.setData({
          screenHeight: res.windowHeight,
          screenWidth: res.windowWidth,
        });
      }
    });
  },
  handletouchmove: function(event) {
    console.log(event)
    let pageX = event.touches[0].pageX;
    let pageY = event.touches[0].pageY;
    //屏幕边界判断
    if (pageX < 30 || pageY < 30)
      return;
    if (pageX > this.data.screenWidth - 30)
      return;
    if (pageY > this.data.screenHeight - 30)
      return;
    this.setData ({
      ballTop: event.touches[0].pageY - 30,
      ballLeft: event.touches[0].pageX - 30,
    });
  },
})
Copier après la connexion

Exécutez-le à nouveau, tout va bien.

Reconnaissance gestuelle

Diverses opérations gestuelles peuvent être reconnues en traitant des opérations de glissement, telles que le glissement vers la gauche et la droite, etc. L'idée est également très simple, il suffit de lier les événements touchstart et touchmove, puis d'identifier et de calculer les informations de coordonnées (telles que current.PageX - last.PageX < 0 est considéré comme glissant vers la gauche)

//wxml
<view id="id" class = "ball" bindtap = "handletap" bindtouchstart = "handletouchtart" bindtouchmove="handletouchmove" style = "width : 100%px; height : 40px;">
{{text}}
</view>

//js
Page({
  data: {
    lastX: 0,
    lastY: 0,
    text : "没有滑动",
  },
  handletouchmove: function(event) {
    console.log(event)
    let currentX = event.touches[0].pageX
    let currentY = event.touches[0].pageY

    console.log(currentX)
    console.log(this.data.lastX)
    let text = ""
    if ((currentX - this.data.lastX) < 0)
      text = "向左滑动"
    else if (((currentX - this.data.lastX) > 0))
      text = "向右滑动"

    //将当前坐标进行保存以进行下一次计算
    this.data.lastX = currentX
    this.data.lastY = currentY
    this.setData({
      text : text,
    });
  },

  handletouchtart:function(event) { 
    console.log(event)
    this.data.lastX = event.touches[0].pageX
    this.data.lastY = event.touches[0].pageY
  },
  handletap:function(event) {
    console.log(event)
  },
})
Copier après la connexion

Exécutez le programme, et lorsque vous glissez vers la gauche, view affichera "Swipe to the left", et la même chose s'applique à droite.

Identifier les glissements à gauche et à droite et les interactions de haut en bas en même temps
Parfois, vous souhaitez identifier les glissements à gauche et à droite et les glissements de haut en bas en même temps. comparez la différence sur l'axe X avec la différence sur l'axe Y. La plus grande différence est la direction de glissement.

 handletouchmove: function(event) {
    console.log(event)
    let currentX = event.touches[0].pageX
    let currentY = event.touches[0].pageY
    let tx = currentX - this.data.lastX
    let ty = currentY - this.data.lastY
    let text = ""
    //左右方向滑动
    if (Math.abs(tx) > Math.abs(ty)) {
      if (tx < 0)
        text = "向左滑动"
      else if (tx > 0)
        text = "向右滑动"
    }
    //上下方向滑动
    else {
      if (ty < 0)
        text = "向上滑动"
      else if (ty > 0)
        text = "向下滑动"
    }

    //将当前坐标进行保存以进行下一次计算
    this.data.lastX = currentX
    this.data.lastY = currentY
    this.setData({
      text : text,
    });
  },
Copier après la connexion

Dans les applications réelles, lorsqu'un certain geste est déclenché, le geste sera reconnu jusqu'à ce que l'utilisateur relâche la souris ou le doigt. Par exemple, lorsque l'utilisateur déclenche le geste de balayage vers la gauche puis glisse vers le bas, l'utilisateur doit toujours suivre le geste de balayage vers la gauche.
Une marque peut être définie pour enregistrer le premier geste reconnu. Si le geste a été reconnu, les opérations de glissement ultérieures peuvent être ignorées jusqu'à ce que l'utilisateur relâche la souris ou le doigt. La libération de l'opération de la souris ou du doigt peut être gérée en liant l'événement handletouchend.

Page({
  data: {
    lastX: 0,
    lastY: 0,
    text : "没有滑动",
    currentGesture: 0,
  },
  handletouchmove: function(event) {
    console.log(event)
    if (this.data.currentGesture != 0){
      return
    }
    let currentX = event.touches[0].pageX
    let currentY = event.touches[0].pageY
    let tx = currentX - this.data.lastX
    let ty = currentY - this.data.lastY
    let text = ""
    //左右方向滑动
    if (Math.abs(tx) > Math.abs(ty)) {
      if (tx < 0) {
        text = "向左滑动"
        this.data.currentGesture = 1
      }
      else if (tx > 0) {
        text = "向右滑动"
        this.data.currentGesture = 2
      }

    }
    //上下方向滑动
    else {
      if (ty < 0){
        text = "向上滑动"
        this.data.currentGesture = 3

      }
      else if (ty > 0) {
        text = "向下滑动"
        this.data.currentGesture = 4
      }

    }

    //将当前坐标进行保存以进行下一次计算
    this.data.lastX = currentX
    this.data.lastY = currentY
    this.setData({
      text : text,
    });
  },

  handletouchtart:function(event) { 
    console.log(event)
    this.data.lastX = event.touches[0].pageX
    this.data.lastY = event.touches[0].pageY
  },
  handletouchend:function(event) {
    console.log(event)
    this.data.currentGesture = 0
    this.setData({
      text : "没有滑动",
    });
  },
})
Copier après la connexion

Multi-touch
Étant donné que le multi-touch nécessite un véritable appareil pour être testé et que mon application est toujours en cours de demande, je ne peux que reporter l'explication. Voici une idée générale. Par exemple, en ouvrant les doigts et en écartant les doigts , vous pouvez déterminer la direction de déplacement des deux points de contact respectivement. Par exemple, le point de contact de gauche glisse vers la gauche. , et le point de contact à droite glisse vers la droite. Autrement dit, cela peut être jugé comme une opération d'écartement des doigts.

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

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

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)

Gestion des sauts de page PHP et du routage dans le développement de mini-programmes Gestion des sauts de page PHP et du routage dans le développement de mini-programmes Jul 04, 2023 pm 01:15 PM

Gestion des sauts de page et du routage PHP dans le développement de mini-programmes Avec le développement rapide des mini-programmes, de plus en plus de développeurs commencent à combiner PHP avec le développement de mini-programmes. Dans le développement de petits programmes, le saut de page et la gestion du routage sont des éléments très importants, qui peuvent aider les développeurs à réaliser des opérations de commutation et de navigation entre les pages. En tant que langage de programmation côté serveur couramment utilisé, PHP peut bien interagir avec les mini-programmes et transférer des données. Examinons en détail la gestion des sauts de page et du routage de PHP dans les mini-programmes. 1. Base de saut de page

Gestion des autorisations PHP et définition des rôles des utilisateurs dans le développement d'un mini-programme Gestion des autorisations PHP et définition des rôles des utilisateurs dans le développement d'un mini-programme Jul 04, 2023 pm 04:48 PM

Gestion des autorisations PHP et définition des rôles des utilisateurs dans le développement de mini-programmes Avec la popularité des mini-programmes et l'expansion de leur champ d'application, les utilisateurs ont mis en avant des exigences plus élevées en matière de fonctions et de sécurité des mini-programmes. Parmi eux, la gestion des autorisations et la définition des rôles des utilisateurs. sont un élément important pour assurer la sécurité des mini-programmes. L'utilisation de PHP pour la gestion des autorisations et la définition des rôles des utilisateurs dans les mini-programmes peut protéger efficacement les données et la confidentialité des utilisateurs. Ce qui suit présente comment implémenter cette fonction. 1. Mise en œuvre de la gestion des autorisations La gestion des autorisations fait référence à l'octroi de différentes autorisations de fonctionnement en fonction de l'identité et du rôle de l'utilisateur. en petit

Comment mettre en œuvre le développement et la publication de petits programmes dans Uniapp Comment mettre en œuvre le développement et la publication de petits programmes dans Uniapp Oct 20, 2023 am 11:33 AM

Comment développer et publier des mini-programmes dans uni-app Avec le développement de l'Internet mobile, les mini-programmes sont devenus une direction importante dans le développement d'applications mobiles. En tant que cadre de développement multiplateforme, uni-app peut prendre en charge le développement simultané de plusieurs petites plateformes de programmes, telles que WeChat, Alipay, Baidu, etc. Ce qui suit présentera en détail comment utiliser uni-app pour développer et publier de petits programmes, et fournira quelques exemples de code spécifiques. 1. Préparation avant de développer de petits programmes. Avant de commencer à utiliser uni-app pour développer de petits programmes, vous devez effectuer quelques préparatifs.

Mise en cache des données PHP et stratégies de mise en cache dans le développement de petits programmes Mise en cache des données PHP et stratégies de mise en cache dans le développement de petits programmes Jul 05, 2023 pm 02:57 PM

Mise en cache des données PHP et stratégies de mise en cache dans le développement de mini-programmes Avec le développement rapide des mini-programmes, de plus en plus de développeurs commencent à prêter attention à la manière d'améliorer les performances et la vitesse de réponse des mini-programmes. L'une des méthodes d'optimisation importantes consiste à utiliser la mise en cache des données pour réduire les accès fréquents à la base de données et aux interfaces externes. En PHP, nous pouvons utiliser diverses stratégies de mise en cache pour implémenter la mise en cache des données. Cet article présentera les principes de la mise en cache des données en PHP et fournira des exemples de codes pour plusieurs stratégies de mise en cache courantes. 1. Principe de mise en cache des données La mise en cache des données fait référence au stockage des données en mémoire pour

Protection de sécurité PHP et prévention des attaques dans le développement de mini-programmes Protection de sécurité PHP et prévention des attaques dans le développement de mini-programmes Jul 07, 2023 am 08:55 AM

Protection de la sécurité PHP et prévention des attaques dans le développement de mini-programmes Avec le développement rapide de l'Internet mobile, les mini-programmes sont devenus une partie importante de la vie des gens. En tant que langage de développement back-end puissant et flexible, PHP est également largement utilisé dans le développement de petits programmes. Cependant, les questions de sécurité ont toujours été un aspect auquel il faut prêter attention lors de l’élaboration des programmes. Cet article se concentrera sur la protection de la sécurité PHP et la prévention des attaques dans le développement de petits programmes, et fournira quelques exemples de code. XSS (cross-site scripting Attack) empêche les attaques XSS lorsque des pirates informatiques injectent des scripts malveillants dans des pages Web

Méthode d'implémentation du menu déroulant développé en PHP dans l'applet WeChat Méthode d'implémentation du menu déroulant développé en PHP dans l'applet WeChat Jun 04, 2023 am 10:31 AM

Aujourd'hui, nous allons apprendre comment implémenter le menu déroulant développé en PHP dans l'applet WeChat. Le mini programme WeChat est une application légère que les utilisateurs peuvent utiliser directement dans WeChat sans téléchargement ni installation, ce qui est très pratique. PHP est un langage de programmation back-end très populaire, et c'est également un langage qui fonctionne bien avec les mini-programmes WeChat. Voyons comment utiliser PHP pour développer des menus déroulants dans les mini-programmes WeChat. Tout d’abord, nous devons préparer l’environnement de développement, y compris PHP, les outils de développement d’applets WeChat et les serveurs. alors nous

Effets d'animation de page PHP et conception d'interactions dans le développement de mini-programmes Effets d'animation de page PHP et conception d'interactions dans le développement de mini-programmes Jul 04, 2023 pm 11:01 PM

Introduction aux effets d'animation de pages PHP et à la conception d'interactions dans le développement de mini-programmes : un mini-programme est une application qui s'exécute sur un appareil mobile et peut offrir une expérience similaire aux applications natives. Dans le développement de mini-programmes, PHP, en tant que langage back-end couramment utilisé, peut ajouter des effets d'animation et une conception interactive aux pages des mini-programmes. Cet article présentera certains effets d'animation de page PHP et conceptions d'interaction couramment utilisés, et joindra des exemples de code. 1. Animation CSS3 CSS3 fournit une multitude de propriétés et de méthodes pour obtenir divers effets d'animation. Et en petit

UniApp met en œuvre une analyse du processus de développement et de lancement des mini-programmes ByteDance UniApp met en œuvre une analyse du processus de développement et de lancement des mini-programmes ByteDance Jul 06, 2023 pm 05:01 PM

Analyse du processus de développement et de lancement des applets ByteDance mis en œuvre par UniApp En tant que méthode émergente de développement d'applications mobiles, les applets ByteDance deviennent progressivement populaires dans l'industrie. Avant de développer le mini programme Bytedance, nous devons comprendre comment utiliser UniApp pour mettre en œuvre le processus de développement et de lancement. 1. Introduction à UniApp UniApp est un framework développé sur la base de Vue.js qui utilise HTML5, App et de petits programmes comme cadre de développement unifié pour plusieurs terminaux. En écrivant un ensemble de code, il peut s'exécuter sur plusieurs plates-formes en même temps. , y compris les polices.

See all articles