VPS参考测评推荐
专注分享VPS主机优惠信息
衡天云优惠活动
荫云优惠活动
wexlayer优惠活动

一步步指导如何用小程序实现3D裸眼轮播效果。

主机参考:VPS测评参考推荐/专注分享VPS服务器优惠信息!若您是商家可以在本站进行投稿,查看详情!此外我们还提供软文收录、PayPal代付、广告赞助等服务,查看详情!
我们发布的部分优惠活动文章可能存在时效性,购买时建议在本站搜索商家名称可查看相关文章充分了解该商家!若非中文页面可使用Edge浏览器同步翻译!PayPal代付/收录合作

如何实现小程序轮播中的3D裸眼效果?下一篇文章将向您展示如何实现它来装饰新年气氛。 希望对您有帮助!

在APP众多的功能模块中,首页轮播扮演着重要的角色。 它是分发重要信息的网关。 我记得几个月前读过一篇文章--《在Ziruke APP中实现裸眼3D效果》。 本文介绍了在Android应用程序中实现了以下裸眼3D横幅轮播效果:

受到本文的启发,“按照示例”模拟3D裸眼我决定尝试一下。 -小程序是充满春节气氛的眼效旋转木马。

原理

仔细观察上面实现的动态渲染。 可以看到,banner图片并不是传统的图片,而是图片内容的分层展示(如上所述)。 文章使用背景图层,将前景和中景相互叠加显示(可以先去上面了解一下),监控手机的方向传感器,并相应地移动前景和背景,这会让你朝那个方向移动,并给出你的视觉景深。 影响。

有趣的是,如果您使用 iPhone,您会注意到当您在主页上向不同方向旋转手机时,背景图像会稍微向相反方向移动。 这可以让你给人们带来类似的景深效果。 (效果如下)

实战

介绍完原理,我们就开始实战吧。

如果你查看小程序文档,你会发现它需要使用两个API:wx.startDeviceMotionListening和wx.onDeviceMotionChange。 这里我们需要关注的是wx.onDeviceMotionChange API返回的内容。 根据文档,该 API 返回三个值:

如果您是第一次使用该API,阅读文档后您可能会感到困惑。 接下来,使用Chrome浏览器调试工具来帮助您充分理解这三个值的含义。

使用 Chrome 开发者工具了解 API 返回值

打开浏览器的开发者工具并按照以下步骤打开传感器调试。

打开后即可看到。这里:

什么? 这不是同一件事吗? 是的,这里显示的三个值与API返回值完全对应。 如果alpha=0,beta=90,gamma=0,我们可以看到手机垂直立在平面上。 点击某个选项或直接更改输入框中的值,可以直观地看到对应的值。 例如,如果手机平放在桌子上,则三个参数值为:

使用上述实时模拟工具,下图将如下所示:

alpha:表示设备沿 Z 轴方向。 轴的旋转角度。 范围从 0 到 360。 Beta:表示设备在X轴上的旋转角度,范围为-180~180。 这表示设备从前到后旋转。 Gamma:表示设备在y轴上的旋转角度,范围为-90到90。 描述从左向右旋转设备时会发生什么。 代码

wxml:

新年快乐 大吉利

注意 swiper 是 swiper-item 只能嵌套。 在组件中,背景图片必须与swiper放在同一水平面上,并显示在适当的位置。

js:

//index.js//获取应用实例 const app = getApp()Page({ data: { background: ['https://cloud-m inapp-39237.cloud .ifanrusercontent.com/1n6jtVIbbJ3rnAv7.jpg', 'https://cloud-minapp-39237.c Loud.ifanrusercontent.com/1n6mBOvOutOFQ3E8.png',], x: 0, y: 0, z: 0, AnimeFinish: true, // 动画是否完成animeStart: false, // 动画是否开始 current : 0 , }, // 动画开始运行handleTransition(e) { if (this.data.animationFinish) { this.setData({animeFinish: false,animeStart:true, }) } }, // 动画执行已完成handleFinish() { this.setData({animeFinish: true,animeStart: false, }) }, // 当前值of handleChange(e) { this.setData({ current: e.detail.current, }) }, onLoad() { const that = this; // 聆听方向的变化。StartDeviceMotionListening({Success(){wx.ondeviceMotionChange(function(res)){const {alpha, // 0- 360 赌a, // -180-180 gamma //-90- 90 } = 分辨率 const disX = gamma / 90 * 20 const disY = beta / 90 * 12 z = 0 如果 (disX > 0 || disY > 0) { z = 20                                                                                                                                             x: disX, y: disY, z ) }})

这里描述的代码是:

const disY = beta / 90 * 12

通常,使用手机时,屏幕朝下。 因此,取相对值的一半。 计算出偏移x、y后,页面通过transform:translate3d()改变元素的偏移距离。

最终效果

这里的效果不是特别明显,有两个原因:

库存照片是我在网上找到的,是拼凑出来的。整个事情是一个复合体。 效果并不美观。 ,如果想要达到更加真实的效果,就需要对素材图片进行设计和搭配。 一旦偏移量达到最大值,就不会发生缓冲区动画。 这并不直观(稍后有时间时您会了解它)。进行研究);附加动画效果

其实这个方向API也可以作为触发动画的触发器。 例如,当您将手机翻转到一定角度时,可以播放烟花效果。

lottie-小程序包npm i 安装Lottie-小程序

安装完成后,别忘了点击【构建npm包】。 微信开发者工具

wxml:

js:

onLoad() { // 初始化Lottie动画 wx.createSelectorQuery() .sel ect( '#canvas').node(res => { const Canvas = res.node const context = Canvas.getContext('2d') Lottie.setup(canvas) LottieInstance = Lottie.loadAnimation ({ 路径: 'https://assets10.lottiefiles.com/packages/lf20_1qfekvox.json', 自动播放: true, 循环: false, 渲染设置: {context}}) } )。 Exec()}

然后在wx.ondEviceMotionChange中调用

Lottieinstance.play()

处理触发

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

PHP快速学习视频免费教程(从初学者到大师)

如何开始学习PHP? 这里有简单的 PHP 学习教程(从初学者到专家)。 您可以保存并下载您想学习的朋友。

下载

这几篇文章你可能也喜欢:

本文由主机参考刊发,转载请注明:一步步指导如何用小程序实现3D裸眼轮播效果。 https://zhujicankao.com/142221.html

【腾讯云】领8888元采购礼包,抢爆款云服务器 每月 9元起,个人开发者加享折上折!
打赏
转载请注明原文链接:主机参考 » 一步步指导如何用小程序实现3D裸眼轮播效果。
主机参考仅做资料收集,不对商家任何信息及交易做信用担保,购买前请注意风险,有交易纠纷请自行解决!请查阅:特别声明

评论 抢沙发

评论前必须登录!