Table des matières
Principe
Combat pratique
Utilisez les outils de développement Chrome pour comprendre les valeurs de retour de l'API
Code
L'effet final
额外的动画效果
安装lottie-miniprogram包
Maison Applet WeChat Développement de mini-programmes Vous expliquez étape par étape comment obtenir l'effet carrousel 3D à l'œil nu dans le mini-programme

Vous expliquez étape par étape comment obtenir l'effet carrousel 3D à l'œil nu dans le mini-programme

Jan 11, 2022 pm 06:59 PM
Mini-programme Carrousel

Comment obtenir un effet 3D à l'œil nu dans le mini carrousel de programmes ? L'article suivant vous présentera la méthode de mise en œuvre pour ajouter de la couleur à l'atmosphère de la Fête du Printemps. J'espère qu'il sera utile à tout le monde !

Vous expliquez étape par étape comment obtenir l'effet carrousel 3D à l'œil nu dans le mini-programme

Parmi les nombreux modules fonctionnels d'une APP, le carrousel de la page d'accueil joue un rôle important. C'est l'entrée pour diffuser les informations clés. Je me suis souvenu d'un article que j'ai lu il y a quelques mois - "Réalisation de l'effet 3D à l'œil nu sur l'application Ziruke". L'article mentionnait que l'effet carrousel de bannière 3D à l'œil nu suivant avait été implémenté sur l'application Android :

Vous expliquez étape par étape comment obtenir leffet carrousel 3D à lœil nu dans le mini-programme

Inspiré par cet article, j'ai décidé de "suivre l'exemple" et d'essayer de simuler un carrousel à effet 3D à l'œil nu plein d'ambiance de la Fête du Printemps sur le mini programme.

Principe

Si vous observez attentivement les rendus dynamiques mis en œuvre ci-dessus, vous pouvez voir que l'image de la bannière n'est pas une image ordinaire, mais un affichage en couches du contenu de l'image (l'article mentionné ci-dessus Comme mentionné, l'arrière-plan couche est utilisée, et le premier plan et le plan intermédiaire sont superposés et présentés (vous pouvez vous déplacer vers ce qui précède pour comprendre), puis surveiller le capteur de direction du téléphone mobile et déplacer le premier plan et l'arrière-plan en fonction de la direction, ce qui entraîne un effet de profondeur de champ visuel.

Fait intéressant, si vous utilisez un iPhone, je pense que vous devriez pouvoir constater que dans l'état de la page d'accueil, lorsque le téléphone pivote dans différentes directions, l'image d'arrière-plan se déplacera légèrement dans la direction opposée, ce qui peut également donner aux gens une profondeur de champ similaire. (L'effet est comme indiqué ci-dessous)

Vous expliquez étape par étape comment obtenir leffet carrousel 3D à lœil nu dans le mini-programme

Combat pratique

Après avoir présenté le principe, commençons le combat proprement dit.

En parcourant la documentation du mini-programme, nous devons utiliser deux API : wx.startDeviceMotionListening et wx.onDeviceMotionChange. Ce sur quoi nous devons nous concentrer ici, c'est le contenu renvoyé par l'API wx.onDeviceMotionChange. Selon la documentation, l'API renvoie les trois valeurs suivantes :

Vous expliquez étape par étape comment obtenir leffet carrousel 3D à lœil nu dans le mini-programme

Si vous êtes exposé à cette API pour la première fois, je crois. vous êtes toujours confus après avoir lu la documentation. Water, j'utiliserai ensuite l'outil de débogage du navigateur Chrome pour vous aider à bien comprendre ce que signifient ces trois valeurs.

Utilisez les outils de développement Chrome pour comprendre les valeurs de retour de l'API

Ouvrez les outils de développement du navigateur et suivez les étapes ci-dessous pour activer le débogage du capteur :

Vous expliquez étape par étape comment obtenir leffet carrousel 3D à lœil nu dans le mini-programme

Après ouverture, regardez ici :

Vous expliquez étape par étape comment obtenir leffet carrousel 3D à lœil nu dans le mini-programme

咦? N'est-ce pas la même chose ? Oui, les trois valeurs affichées ici correspondent exactement à la valeur de retour de l'API. On voit que dans le cas de alpha=0, beta=90, gamma=0, cela signifie que le téléphone se trouve verticalement sur un plan. On peut cliquer sur l'option ou modifier directement la valeur dans la zone de saisie, et. nous pouvons intuitivement voir la valeur correspondante changer, l'état du flip du téléphone change, par exemple, lorsque le téléphone est posé à plat sur la table, les trois valeurs des paramètres sont les suivantes :

Vous expliquez étape par étape comment obtenir leffet carrousel 3D à lœil nu dans le mini-programme

Avec le au-dessus de l'outil de simulation en temps réel, l'image suivante est facile à comprendre :

Vous expliquez étape par étape comment obtenir leffet carrousel 3D à lœil nu dans le mini-programme

  • alpha : représente l'angle de rotation de l'appareil le long de l'axe Z, allant de 0 à 360 ;
  • beta : représente l'angle ; de rotation de l'appareil sur l'axe des x, allant de -180 à 180. Il décrit la rotation de l'appareil d'avant en arrière ;
  • gamma : indique l'angle de rotation de l'appareil sur l'axe y, allant de -90~90. Il décrit la situation dans laquelle l'appareil tourne de gauche à droite.

Code

wxml:

<view class="swiper-box">
  <image  wx:for="{{background}}" class="swiper-bg {{animationStart || current === index ? &#39;fadeIn&#39; : &#39;fadeOut&#39;}} "></image>
  <swiper indicator-dots="{{true}}" indicator-active-color="#fff" interval="{{3000}}" autoplay="{{true}}" circular="{{true}}" bindchange="handleChange" bindtransition="handleTransition" bindanimationfinish="handleFinish">
    <block wx:for="{{background}}" wx:key="*this">
      <swiper-item>
        <view class="swiper-item-content" >
          <image class="icon" src="../../images/cloud.png"  style="width: 90px; height: 90px;transform: translate3d({{x}}px, {{y}}px, {{z}}px);" wx:if="{{index === 0}}"></image>
          <image class="icon" src="../../images/firecrackers.png" style="width: 90px; height: 90px;transform: translate3d({{x}}px, {{y}}px, {{z}}px);" wx:else></image>
          <text class="text" wx:if="{{index === 0}}">新年快乐</text>
          <text class="text" wx:else>大吉大利</text>
        </view>
      </swiper-item>
    </block>
  </swiper>
</view>

Notez ici que puisque le swiper ne peut imbriquer que le composant swiper-item, l'image d'arrière-plan doit être placée au même niveau du swiper et affichée de manière positionnée

js :

// index.js
// 获取应用实例
const app = getApp()

Page({
  data: {
    background: [&#39;https://cloud-minapp-39237.cloud.ifanrusercontent.com/1n6jtVIbbJ3rnAv7.jpg&#39;, &#39;https://cloud-minapp-39237.cloud.ifanrusercontent.com/1n6mBOvOutOFQ3E8.png&#39;,],
    x: 0,
    y: 0,
    z: 0,
    animationFinish: true, // 动画是否执行完成
    animationStart: false, // 是否开始执行动画
    current: 0,
  },
  // 动画开始执行
  handleTransition(e) {
    if (this.data.animationFinish) {
      this.setData({
        animationFinish: false,
        animationStart: true,
      })
    }
  },
  // 动画执行结束
  handleFinish() {
    this.setData({
      animationFinish: true,
      animationStart: false,
    })
  },
  // current值变化
  handleChange(e) {
    this.setData({
      current: e.detail.current,
    })
  },
  onLoad() {

    const that = this;
    // 监听方向变化
    wx.startDeviceMotionListening({
      success() {
        wx.onDeviceMotionChange(function (res) {
          const {
            alpha, // 0-360
            beta, // -180-180
            gamma // -90- 90
          } = res
       
          const disX = gamma / 90 * 20 
          const disY = beta / 90 * 12
          let z = 0
          if (disX > 0 || disY > 0) {
            z = 20
          } else {
            z = -20
          }
          that.setData({
            x: disX,
            y: disY,
            z
          })
        })
      }
    })
  }
})

Le code à expliquer ici est

const disY = beta / 90 * 12

Normalement, lorsque nous utilisons le téléphone portable, l'écran est orienté vers le haut, il suffit donc de prendre la moitié de la valeur relative. Après avoir calculé le décalage x, y, la page modifie la distance de décalage de l'élément via transform: translate3d().

L'effet final

Vous expliquez étape par étape comment obtenir leffet carrousel 3D à lœil nu dans le mini-programme

Il semble que l'effet ici ne soit pas particulièrement évident. Il y a deux raisons :

.
  • 素材图是我网上找到拼凑而成,总体合成效果并不美观,想达到较逼真的效果需要设计配合出素材图;
  • 在偏移至最大值时,未做缓冲动画,不合符直觉(这里后面有时间再研究实现);

额外的动画效果

其实借助该方向API,我们还可以作为触发动画的触发器。例如在手机翻转到一定角度值时,我们可以播放烟花效果

安装lottie-miniprogram包

npm i lottie-miniprogram

安装完之后记得在微信开发者工具中点击构建npm包

wxml:

<canvas id="canvas" type="2d"   style="max-width:90%"></canvas>

js:

  onLoad() {
    // 初始化lottie动画
    wx.createSelectorQuery().select(&#39;#canvas&#39;).node(res => {
      const canvas = res.node
      const context = canvas.getContext(&#39;2d&#39;)
      lottie.setup(canvas)
      lottieInstance = lottie.loadAnimation({
        path: &#39;https://assets10.lottiefiles.com/packages/lf20_1qfekvox.json&#39;,
        autoplay: true,
        loop: false,
        rendererSettings:{
          context
        }
      })
    }).exec()
  }

然后在wx.onDeviceMotionChange中调用

lottieInstance.play()

处理触发即可

完整代码

https://github.com/pengjinlong/cases/tree/main/spring-article

本文转载自:https://juejin.cn/post/7051490823497580574

作者:码克吐温

【相关学习推荐:小程序开发教程

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

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.

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)

Développer l'applet WeChat en utilisant Python Développer l'applet WeChat en utilisant Python Jun 17, 2023 pm 06:34 PM

Avec la popularité de la technologie Internet mobile et des smartphones, WeChat est devenu une application indispensable dans la vie des gens. Les mini-programmes WeChat permettent aux gens d'utiliser directement des mini-programmes pour résoudre certains besoins simples sans télécharger ni installer d'applications. Cet article explique comment utiliser Python pour développer l'applet WeChat. 1. Préparation Avant d'utiliser Python pour développer l'applet WeChat, vous devez installer la bibliothèque Python appropriée. Il est recommandé d'utiliser ici les deux bibliothèques wxpy et itchat. wxpy est une machine WeChat

Implémenter des effets de retournement de cartes dans les mini-programmes WeChat Implémenter des effets de retournement de cartes dans les mini-programmes WeChat Nov 21, 2023 am 10:55 AM

Implémentation d'effets de retournement de cartes dans les mini-programmes WeChat Dans les mini-programmes WeChat, la mise en œuvre d'effets de retournement de cartes est un effet d'animation courant qui peut améliorer l'expérience utilisateur et l'attractivité des interactions d'interface. Ce qui suit présentera en détail comment implémenter l'effet de retournement de carte dans l'applet WeChat et fournira des exemples de code pertinents. Tout d'abord, vous devez définir deux éléments de carte dans le fichier de mise en page du mini-programme, un pour afficher le contenu avant et un pour afficher le contenu arrière. L'exemple de code spécifique est le suivant : &lt;!--index.wxml-. -&gt;&l

Alipay a lancé le mini-programme « Chinese Character Picking-Rare Characters » pour collecter et compléter la bibliothèque de personnages rares. Alipay a lancé le mini-programme « Chinese Character Picking-Rare Characters » pour collecter et compléter la bibliothèque de personnages rares. Oct 31, 2023 pm 09:25 PM

Selon les informations de ce site du 31 octobre, le 27 mai de cette année, Ant Group a annoncé le lancement du « Projet de sélection de caractères chinois » et a récemment inauguré de nouveaux progrès : Alipay a lancé le mini-programme « Sélection de caractères chinois-Caractères rares ». pour collecter des collections de la société Les personnages rares complètent la bibliothèque de personnages rares et offrent différentes expériences de saisie pour les personnages rares afin d'aider à améliorer la méthode de saisie des caractères rares dans Alipay. Actuellement, les utilisateurs peuvent accéder à l'applet « Caractères peu communs » en recherchant des mots-clés tels que « capture de caractères chinois » et « caractères rares ». Dans le mini-programme, les utilisateurs peuvent soumettre des images de caractères rares qui n'ont pas été reconnus et saisis par le système. Après confirmation, les ingénieurs d'Alipay effectueront des entrées supplémentaires dans la bibliothèque de polices. Ce site Web a remarqué que les utilisateurs peuvent également découvrir la dernière méthode de saisie par fractionnement de mots dans le mini-programme. Cette méthode de saisie est conçue pour les mots rares dont la prononciation n'est pas claire. Démantèlement utilisateur

Les petits programmes peuvent-ils réagir ? Les petits programmes peuvent-ils réagir ? Dec 29, 2022 am 11:06 AM

Les mini-programmes peuvent utiliser React. Comment l'utiliser : 1. Implémentez un moteur de rendu basé sur "react-reconciler" et générez un DSL ; 2. Créez un mini composant de programme pour analyser et restituer le DSL 3. Installez npm et exécutez le développeur Build ; npm dans l'outil ; 4. Introduisez le package dans votre propre page, puis utilisez l'API pour terminer le développement.

Comment Uniapp réalise une conversion rapide entre les mini-programmes et H5 Comment Uniapp réalise une conversion rapide entre les mini-programmes et H5 Oct 20, 2023 pm 02:12 PM

La manière dont Uniapp peut réaliser une conversion rapide entre les mini-programmes et le H5 nécessite des exemples de code spécifiques. Ces dernières années, avec le développement de l'Internet mobile et la popularité des smartphones, les mini-programmes et le H5 sont devenus des formulaires de candidature indispensables. En tant que cadre de développement multiplateforme, uniapp peut réaliser rapidement la conversion entre les petits programmes et H5 sur la base d'un ensemble de codes, améliorant considérablement l'efficacité du développement. Cet article présentera comment Uniapp peut réaliser une conversion rapide entre les mini-programmes et H5, et donnera des exemples de code spécifiques. 1. Introduction à uniapp unia

Vous apprendre à utiliser des modèles de messages de compte public dans des mini-programmes (avec des idées détaillées) Vous apprendre à utiliser des modèles de messages de compte public dans des mini-programmes (avec des idées détaillées) Nov 04, 2022 pm 04:53 PM

Cet article vous présente quelques problèmes liés aux mini-programmes WeChat. Il présente principalement comment utiliser les modèles de messages de compte officiel dans les mini-programmes. J'espère que cela sera utile à tout le monde.

Tutoriel sur l'écriture d'un programme de chat simple en Python Tutoriel sur l'écriture d'un programme de chat simple en Python May 08, 2023 pm 06:37 PM

Idée d'implémentation x01 Mise en place du serveur Tout d'abord, côté serveur, le socket est utilisé pour accepter les messages. Chaque fois qu'une demande de socket est acceptée, un nouveau thread est ouvert pour gérer la distribution et l'acceptation des messages. En même temps, il y a un gestionnaire. pour gérer tous les Threads, réalisant ainsi le traitement des diverses fonctions du salon de discussion. La mise en place du client x02 est beaucoup plus simple que celle du serveur. La fonction du client est uniquement d'envoyer et de recevoir des messages, et de saisir des caractères spécifiques en fonction. règles spécifiques. Pour pouvoir utiliser différentes fonctions, il suffit donc, côté client, d'utiliser deux threads, l'un est dédié à la réception de messages et l'autre à l'envoi de messages. Quant à pourquoi ne pas en utiliser un, celui-là. c'est parce que, seulement

Positionnement géographique et affichage cartographique à l'aide de PHP et de mini-programmes Positionnement géographique et affichage cartographique à l'aide de PHP et de mini-programmes Jul 04, 2023 pm 04:01 PM

Positionnement par géolocalisation et affichage cartographique de PHP et des mini-programmes Le positionnement par géolocalisation et l'affichage cartographique sont devenus l'une des fonctions nécessaires de la technologie moderne. Avec la popularité des appareils mobiles, la demande des gens en matière de positionnement et d'affichage de cartes augmente également. Au cours du processus de développement, PHP et les applets sont deux choix technologiques courants. Cet article vous présentera la méthode de mise en œuvre du positionnement géographique et de l'affichage de la carte dans PHP et les mini-programmes, et joindra des exemples de code correspondants. 1. Géolocalisation en PHP En PHP, on peut utiliser la géolocalisation tierce

See all articles