gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

手把手帶你在小程序中怎么實現3d裸眼輪播效果

小程序輪播如何實現3d裸眼效果?下面本篇文章來給大家介紹一下實現方法,為春節氣氛添燈加彩,希望對大家有所幫助!

手把手帶你在小程序中怎么實現3d裸眼輪播效果

一個APP眾多功能模塊中,首頁輪播圖扮演著重要角色,它是分發重點資訊的入口。想起幾個月前看過一篇文章–《自如客APP裸眼3D效果的實現》,該文提及在安卓app端實現了如下裸眼3d banner輪播效果圖:

手把手帶你在小程序中怎么實現3d裸眼輪播效果

受該文啟發,決定“依葫蘆畫瓢”,嘗試在小程序端模擬實現一個春節氛圍滿滿的3d裸眼效果輪播圖。

原理

仔細觀察上面實現的動態效果圖,可以看出該banner圖并非常規的一張圖片,而是采用了一張圖內容分層的方式疊加顯示(上文提及的文章有提到,是采用了背景層,前景和中景三個疊加后呈現,可以先移步上文了解),然后監聽手機方向傳感器,根據方向對前景和背景進行移動,造成視覺上的景深效果。

有趣的是,如果你使用的是iPhone手機,相信你應該能發現在首頁狀態下,隨著手機不同方向的轉動,背景圖會跟著反方向輕微移動,也能給人一種類似的景深效果。(效果如下圖)

手把手帶你在小程序中怎么實現3d裸眼輪播效果

實戰

介紹完了原理,那就開始實戰吧。

翻閱小程序文檔,我們需要用到兩個API:wx.startDeviceMotionListening 和 wx.onDeviceMotionChange。 這里我們需要重點關注的是wx.onDeviceMotionChange這個API返回的內容,根據文檔,該API返回如下三個值:

手把手帶你在小程序中怎么實現3d裸眼輪播效果

如果你是第一次接觸這個API,相信你看了文檔也是一頭霧水,接下來我將用chrome瀏覽器調試工具幫你徹底理解這三個值分別是什么意思。

借助chrome開發者工具理解API返回值

打開瀏覽器開發者工具,按照如下步驟打開傳感器調試:

手把手帶你在小程序中怎么實現3d裸眼輪播效果

打開后,看這里:

手把手帶你在小程序中怎么實現3d裸眼輪播效果

咦?這不是一樣的嗎?沒錯,這里顯示的三個值剛好與該API返回值對應。可以看到在alpha=0,beta=90,gamma=0的情況下,代表手機是垂直立在平面,我門可以點擊選項或者直接在輸入框中修改值,就可以直觀的看到隨著值的變化,手機的翻轉狀態變化,例如手機平放桌面時,三個參數值如下:

手把手帶你在小程序中怎么實現3d裸眼輪播效果

有了上面實時模擬的工具,接下來這個圖就好理解了:

手把手帶你在小程序中怎么實現3d裸眼輪播效果

  • 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: ['https://cloud-minapp-39237.cloud.ifanrusercontent.com/1n6jtVIbbJ3rnAv7.jpg', 'https://cloud-minapp-39237.cloud.ifanrusercontent.com/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()改變元素偏移距離。

最終實現效果

手把手帶你在小程序中怎么實現3d裸眼輪播效果

這里看起來效果不是特別明顯,原因有兩個:

  • 素材圖是我網上找到拼湊而成,總體合成效果并不美觀,想達到較逼真的效果需要設計配合出素材圖;
  • 在偏移至最大值時,未做緩沖動畫,不合符直覺(這里后面有時間再研究實現);

額外的動畫效果

其實借助該方向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: 'https://assets10.lottiefiles.com/packages/lf20_1qfekvox.json',         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

作者:碼克吐溫

【相關學習推薦:小程序開發教程】

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
亚洲一级片av| 日本77777| 深爱五月综合网| 国产福利片一区二区| 欧美国产在线一区| 福利片一区二区三区| 成人在线免费观看网址| 屁屁影院ccyy国产第一页| a√天堂在线观看| 天堂在线中文在线| 久草视频国产在线| jizz欧美性11| 精品少妇人欧美激情在线观看| 97在线免费公开视频| 99久久久无码国产精品性色戒| 黄色www网站| 亚洲欧美天堂在线| 一二三级黄色片| 国产精品一二三在线观看| 久久免费一级片| 97超碰在线视| 国产一级片中文字幕| 无套内谢丰满少妇中文字幕| 久久av喷吹av高潮av| 国产黄色激情视频| 凹凸日日摸日日碰夜夜爽1| 亚洲天堂av一区二区| 欧美成人福利在线观看| 91嫩草国产丨精品入口麻豆| 国产成人亚洲综合无码| 久久久999免费视频| 在线免费视频a| 国产视频一区二区三区在线播放| 欧美人与动牲交xxxxbbbb| 丝袜人妻一区二区三区| 色综合色综合色综合色综合| 99精品一区二区三区的区别| 131美女爱做视频| 国产精品久久国产| 国产福利视频在线播放| 欧美 国产 精品| 欧美 激情 在线| 国产欧美精品aaaaaa片| 手机av在线免费| 免费成人在线视频网站| 男女激烈动态图| 久久久免费视频网站| 国产卡一卡二在线| 久久精品网站视频| 日本香蕉视频在线观看| 国产精欧美一区二区三区白种人| 好吊妞无缓冲视频观看| 国产成人免费高清视频| 中文av一区二区三区| 免费人成自慰网站| 成年人黄色在线观看| 久久久久国产一区| 黄色录像特级片| 天天干天天爽天天射| 亚洲爆乳无码专区| 日韩精品xxxx| 女人帮男人橹视频播放| 国产精品jizz在线观看老狼| 午夜免费福利在线| wwwwww.色| 99视频免费播放| 欧美aⅴ在线观看| 大肉大捧一进一出好爽视频| 妺妺窝人体色www看人体| 一本之道在线视频| 男人的天堂成人| 大地资源网在线观看免费官网| 国产农村妇女精品久久| 伊人五月天婷婷| 亚洲av毛片在线观看| 26uuu成人| 欧美乱大交xxxxx潮喷l头像| 性高湖久久久久久久久aaaaa| 在线免费观看av网| 亚洲女人在线观看| 在线观看成人免费| 欧洲精品一区二区三区久久| 国内少妇毛片视频| 欧日韩免费视频| 男人女人黄一级| 久久精品久久99| 大胆欧美熟妇xx| 丝袜制服一区二区三区| 久久精品国产露脸对白| 人人妻人人澡人人爽欧美一区| 国产色一区二区三区| 中文字幕在线观看第三页| gogogo高清免费观看在线视频| 图片区乱熟图片区亚洲| 人人妻人人澡人人爽欧美一区| 大肉大捧一进一出好爽视频| 欧美精品久久久久久久久25p| 91pony九色| 免费一级特黄毛片| 五月婷婷六月丁香激情| 777久久精品一区二区三区无码 | 蜜臀视频一区二区三区| www.久久av.com| 久久久久99精品成人片| 人妻丰满熟妇av无码区app| 9999在线观看| 国产福利视频在线播放| 无码人妻aⅴ一区二区三区日本| 成年人网站国产| 99九九99九九九99九他书对| 日本免费成人网| 国产欧美激情视频| 日本在线视频www| 成人在线观看毛片| 国产又大又黄又猛| 亚洲熟妇av一区二区三区漫画| 久久精品一卡二卡| 天天爽天天爽夜夜爽| 男女裸体影院高潮| 中文字幕 欧美日韩| 国产成人综合一区| 免费看国产一级片| 成人午夜免费在线视频| 91精品视频国产| 亚洲第一色av| 加勒比av中文字幕| www.日本一区| 中日韩av在线播放| 亚洲欧美自拍另类日韩| 日韩手机在线观看视频| 高清在线观看免费| 国产成人无码精品久久久性色| 免费看毛片的网址| 免费毛片网站在线观看| 欧美成人免费在线观看视频| 日韩精品一区二区在线视频| 91制片厂免费观看| 男人的天堂成人| 蜜桃视频一区二区在线观看| 天天操天天干天天玩| 99久re热视频精品98| 久久久久久久香蕉| 午夜精品久久久久久久无码| 六月婷婷激情综合| 欧美性久久久久| 亚洲综合在线网站| 国内自拍视频网| 手机免费av片| 奇米777四色影视在线看| 国产一区二区视频播放| 人妻精品无码一区二区三区| 亚洲性生活网站| 国产欧美激情视频| 无码熟妇人妻av在线电影| 国产黄视频在线| 日韩一区二区三区不卡视频| 中文字幕在线视频一区二区| 日韩精品一区二区在线视频| 男人揉女人奶房视频60分| 搡女人真爽免费午夜网站| 国产高清精品软男同| 国产精品沙发午睡系列| www.cao超碰| www.中文字幕在线| 97超碰免费观看| 成人在线观看a| 日本一二三区在线| 极品美女扒开粉嫩小泬| 91欧美一区二区三区| 中文字幕无码精品亚洲资源网久久| 日韩精品一区中文字幕| 国产不卡的av| 91av俱乐部| 久久视频这里有精品| 小明看看成人免费视频| 欧美在线一区视频| 色18美女社区| 99视频在线视频| 成人黄色大片网站| 欧美亚洲视频一区| 国产野外作爱视频播放| 免费人成自慰网站| 三年中国中文在线观看免费播放| 97在线播放视频| 又大又硬又爽免费视频| 中文字幕在线观看日| 欧美 日本 亚洲| 日本大片免费看| 久久久无码中文字幕久...| 亚洲黄色av片| 成人性视频欧美一区二区三区| 妞干网在线播放| 欧美日韩午夜爽爽| 1314成人网| 污污网站在线观看视频| 啊啊啊国产视频| 老熟妇仑乱视频一区二区 | 一本大道东京热无码aⅴ| www.久久com| 中国一级大黄大黄大色毛片|