




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】在小程序中如何实现3d裸眼轮播效果
在下今天带大家了解在小程序中如何实现3d裸眼轮播效果,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着在下一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着在下一起深入学习“在小程序中如何实现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:<view
class="swiper-box">
<image
src="{{item}}"
wx:for="{{background}}"
class="swiper-bg
{{animationStart
||
current
===
index
?
'fadeIn'
:
'fadeOut'}}
"></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>这里注意的是,由于swiper只能嵌套swiper-item组件,所以需要将背景图放置于swiper同级,并用定位的方式显示js://
index.js
//
获取应用实例
const
app
=
getApp()
Page({
data:
{
background:
['/1n6jtVIbbJ3rnAv7.jpg',
'/1n6mBOvOutOFQ3E8.png',],
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
})
})
}
})
}
})这里要做解释的代码是const
disY
=
beta
/
90
*
12正常我们使用手机是屏幕朝上,所以取相对值一半即可。
根据计算得到的偏移x,y后,页面通过transform:translate3d()改变元素偏移距离。最终实现效果这里看起来效果不是特别明显,原因有两个:素材图是我网上找到拼凑而成,总体合成效果并不美观,想达到较逼真的效果需要设计配合出素材图;在偏移至最大值时,未做缓冲动画,不合符直觉(这里后面有时间再研究实现);额外的动画效果其实借助该方向API,我们还可以作为触发动画的触发器。例如在手机翻转到一定角度值时,我们可以播放烟花效果安装lottie-miniprogram包npm
i
lottie-miniprogram安装完之后记得在微信开发者工具中点击构建npm包wxml:<canvas
id="canvas"
type="2d"
style="position:
absolute;top:
0;left:
0;width:
300px;
height:
200px;z-index:
99;"></canvas>js:
onLoad()
{
//
初始化lottie动画
wx.createSelectorQuery().select('#canvas').node(res
=>
{
const
canvas
=
res.node
const
context
=
canvas.getContext('2d')
lottie.setup(canvas)
lottieInstance
=
lottie.loadAnimation({
path:
'/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025贵州兴黔人才资源有限责任公司模拟试卷及完整答案详解一套
- 2025初级经济师金融专业常考知识点:企业合同的分类及其特点
- 2025年宣城宣州区水阳镇选拔村级后备干部18人模拟试卷及答案详解1套
- 2025年齐齐哈尔工程学院博士人才招聘50人模拟试卷及参考答案详解一套
- 2025湖北黄冈市武穴市事业单位第二批考核招聘三支一扶服务期满人员1人考前自测高频考点模拟试题及完整答案详解1套
- 2025北京大兴区庞各庄镇中心卫生院招聘临时辅助用工模拟试卷附答案详解(突破训练)
- 2025广西玉林市福绵区石和镇人民政府招聘代理服务记账中心编外人员2人考前自测高频考点模拟试题及一套参考答案详解
- 2025涟水县事业单位招聘人员40人考前自测高频考点模拟试题及1套完整答案详解
- 2025广西钦州市钦南区林业局招聘1人模拟试卷带答案详解
- 2025航空工业集团通飞华南校园招聘考前自测高频考点模拟试题含答案详解
- 教师晋升答辩常见问题汇编
- 新加坡安全培训题库及答案解析
- (人教A版)选择性必修一数学高二上册 第一章 空间向量与立体几何(A卷·知识通关练+B卷提升练习)(原卷版)
- 2025煤矿安全规程解读
- 2025-2026学年北师大版数学小学三年级上册(全册)教案设计及教学计划
- 2025年“学宪法讲宪法”主题活动知识竞赛题库附答案
- 2025年党纪法规知识测试题(含答案)
- 护理伦理与法律
- 网赌网贷专题教育
- (2025年)【辅警协警】笔试模拟考试试题含答案
- 急性阑尾炎护理诊断及措施
评论
0/150
提交评论