国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

微信小程序animation動畫,微信小程序animation動畫無限循環(huán)播放

這篇具有很好參考價值的文章主要介紹了微信小程序animation動畫,微信小程序animation動畫無限循環(huán)播放。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

需求是醬紫的:

微信小程序各種動畫,微信小程序,微信小程序,小程序
頁面頂部的喇叭通知,內(nèi)容不固定,寬度不固定,就是做走馬燈(輪播)效果,從左到右的走馬燈(輪播),每播放一遍暫停 1500ms ~ 2000ms

剛開始想的是 css 的 position: relative + animation,如果寬度固定還好說,寬度不固定,用百分比的話,想象很美好,現(xiàn)實很骨感,百分比相對的是父元素寬度…,所以 pass 掉

又想到動態(tài)生成 keyframes ,這樣動態(tài)獲取子元素寬度,再動態(tài)生成 keyframes ,動態(tài)傳入 偏移量,這樣就好了,可是這是小程序…,如果web端倒是可以動態(tài)操作 cssRule,小程序端,我真不會

然后從小程序文檔直接搜索 animation ,還真找到了
Animation API

于是就理所當然的用上啦

看結(jié)果

不嘮叨,直接點擊查看代碼片段:https://developers.weixin.qq.com/s/Ju3T3amk7oKc

思路:

頁面結(jié)構(gòu)

<view class="integral-notice common-flex-between">
  <view class="integral-notice-left">
    <image class="integral-notice-left-icon" src="icon-horn.png" mode="aspectFill"></image>
  </view>
  <view class="integral-notice-right common-flex-start">
    <view class="integral-notice-right-item notice_1" animation="{{animationData}}">各位憧橙會員大家好,積分商城發(fā)貨周期為一個月2次,每個月15號和30號發(fā)貨,有問題請聯(lián)系客服,謝謝!</view>
    <!-- 這里之所以放兩個一樣的,是為了無縫銜接的滾動 -->
    <view class="integral-notice-right-item notice_1" animation="{{animationData}}">各位憧橙會員大家好,積分商城發(fā)貨周期為一個月2次,每個月15號和30號發(fā)貨,有問題請聯(lián)系客服,謝謝!</view>
  </view>
</view>

樣式代碼


/*通用flex水平方向垂直居中布局*/
.common-flex-between {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: nowrap;
}

.common-flex-around {
  display: flex;
  justify-content: space-around;
  align-items: center;
  flex-wrap: nowrap;
}

.common-flex-center {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-wrap: nowrap;
}

.common-flex-start {
  display: flex;
  justify-content: flex-start;
  align-items: center;
  flex-wrap: nowrap;
}
.integral-notice{
  position: fixed;
  left: 0;
  top: 0;
  background: #FEF6F0;
  width: 750rpx;
  height: 98rpx;
  box-sizing: border-box;
  padding-left: 24rpx;
  padding-right: 24rpx;
}
.integral-notice-left{
  box-sizing: border-box;
  padding-right: 20rpx;
}
.integral-notice-left-icon{
  display: block;
  width: 38rpx;
  height: 34rpx;
}
.integral-notice-right{
  overflow: hidden;
}
.integral-notice-right-item{
  white-space: nowrap;
  color: #141418;
  font-size: 28rpx;
  letter-spacing: 2rpx;
  height: 32rpx;
  line-height: 34rpx;
  position: relative;
  left: 0;
  top: 0;
}

第一步: 讓它動起來

js代碼

  /**
   * 頁面的初始數(shù)據(jù)
   */
  data: {
    animationData: {},
  },
  /**
   * 生命周期函數(shù)--監(jiān)聽頁面初次渲染完成
   */
  onReady: function () {
    const query = wx.createSelectorQuery()
    query.selectAll('.notice_1').boundingClientRect((res)=>{
      let noticeWidth = res[0].width
      this.startAnimation(noticeWidth)
    })
    query.exec()
  },
  startAnimation(left, duration = 10000) {
    this.animation = wx.createAnimation()
    let offset = -left
    this.animation.left(offset).step({
      duration,
      timingFunction: 'linear'
    })
    this.setData({
      animationData: this.animation.export()
    })
  },

備注:這里你會發(fā)現(xiàn),是動起來了,就執(zhí)行了一次

木事,改代碼,讓它執(zhí)行完的時候回到起點

  startAnimation(left, duration = 10000) {
    this.animation = wx.createAnimation()
    let offset = -left
    this.animation.left(offset).step({
      duration,
      timingFunction: 'linear'
    })
    this.setData({
      animationData: this.animation.export()
    })
    // 這里,讓它回去起點,便于后邊無限循環(huán)
    setTimeout(() => {
      this.animation.left(0).step({
        duration: 0, // 時間為 0
        timingFunction: 'step-start' // 這個是 動畫第一幀就跳至結(jié)束狀態(tài)直到結(jié)束
      })
      this.setData({
        animationData: this.animation.export()
      })
    }, duration)
  },

看到這里,無限循環(huán)播放的動畫就知道怎么做了吧,做個遞歸不就好啦?不信咱試試?

  startAnimation(left, duration = 10000) {
    this.animation = wx.createAnimation()
    let offset = -left
    this.animation.left(offset).step({
      duration,
      timingFunction: 'linear'
    })
    this.setData({
      animationData: this.animation.export()
    })
    setTimeout(() => {
      this.animation.left(0).step({
        duration: 0,
        timingFunction: 'step-start'
      })
      this.setData({
        animationData: this.animation.export()
      })
      // 遞歸,無限循環(huán)播放
      this.startAnimation(left, duration)
    }, duration)
  },

注意:你會發(fā)現(xiàn)時好時壞,沒事,加延遲,加異步,因為雖然是同步執(zhí)行的代碼,代碼執(zhí)行+運行也要時間啊,1ms、5ms、10ms 也是時間

  startAnimation(left, duration = 10000, wait = 2000) {
    this.animation = wx.createAnimation()
    let offset = -left
    this.animation.left(offset).step({
      duration,
      timingFunction: 'linear'
    })
    this.setData({
      animationData: this.animation.export()
    })
    setTimeout(() => {
      this.animation.left(0).step({
        duration: 0,
        timingFunction: 'step-start'
      })
      this.setData({
        animationData: this.animation.export()
      })
      // 加上延遲,加上需求上的等待時間 wait
      let minWait = 12 // 之所以給了個 minWait,是防止 bug,就是那個代碼執(zhí)行/運行時間,經(jīng)測試,我這里 12ms 的延遲比較合適
      setTimeout(() => {
        this.startAnimation(left, duration, wait)
      }, wait < minWait ? minWait : wait)
    }, duration)
  },

歐啦,大功告成,
微信小程序各種動畫,微信小程序,微信小程序,小程序文章來源地址http://www.zghlxwxcb.cn/news/detail-643892.html

到了這里,關(guān)于微信小程序animation動畫,微信小程序animation動畫無限循環(huán)播放的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • Unity Animator獲取當前播放動畫片段

    Animator獲取當前播放片段,獲取錯誤,跟當前播放的片段不一致的原因。 一般使用下面API,獲取當前動畫機播放片段: 這里有一個機制,如果上一句代碼是播放一個動畫片段,下一句代碼立即去獲取當前播放片段信息,是獲取不到的,需要等待幾十ms的延遲,才能正確獲取到

    2024年02月12日
    瀏覽(19)
  • unity中l(wèi)egacy動畫用animation播放【播放,正播,倒播,重播】

    unity中l(wèi)egacy動畫用animation播放【播放,正播,倒播,重播】

    目前unity中有兩種動畫,一種是legacy動畫,用Animation播放, 另一種是Mecanim,用Anamator播放。 本文只討論legacy動畫的播放,不涉及其它動畫,也不涉及l(fā)egacy動畫的制作。 確保物體上已經(jīng)掛了動畫,一般只有一個動畫片段。檢查是否能播放:勾選自動播放,點擊運行進行測試。

    2024年02月06日
    瀏覽(26)
  • Unity 踩坑筆記 Animation動畫不播放

    Unity 踩坑筆記 Animation動畫不播放

    情況① 物體單掛Animation,無Animator,無法自動播放 原因 :兩種Animation Clip 解決方案 : 注:此舉會使其綁定的Animator失效 情況② 與上述相反,動畫在Animator中無法播放 解決 :取消Legacy

    2024年02月12日
    瀏覽(25)
  • Unity中Animation創(chuàng)建的動畫如何指定播放

    Unity中Animation創(chuàng)建的動畫如何指定播放

    使用Unity自帶的Animation制作的動畫如何指定幀播放和結(jié)束? 1.選擇需要播放的動畫,Inspector面板右鍵Debug,勾選Legacy 2.添加腳本,掛載腳本

    2024年02月03日
    瀏覽(18)
  • Unity中,點擊按鈕Button,控制,動畫Animator暫停播放

    在Unity中,你可以使用以下腳本來實現(xiàn)點擊按鈕時停止動畫的功能: using UnityEngine; using UnityEngine.UI; public class StopAnimationOnClick : MonoBehaviour { ? ? public Animator animator; ? ? public Button button; ? ? private bool isAnimationPlaying = true; ? ? private void Start() ? ? { ? ? ? ? button.onClick.AddListen

    2024年04月27日
    瀏覽(24)
  • 微信小程序使用animation.css

    微信小程序使用animation.css

    animation.css是一款純css動畫庫,其中提供了豐富的動畫效果 我們直接下載animation.css,即可使用其中的樣式 其官網(wǎng)為:Animate.css | A cross-browser library of CSS animations. 使用npm下載animation.css: npm install animation.css -g 注:-g是全局下載,如果需要把package的信息寫入package.json文件的話,

    2024年02月12日
    瀏覽(21)
  • Unity Animator.Play(stateName, layer, normalizedTime) 播放動畫函數(shù)用法

    Unity Animator.Play(stateName, layer, normalizedTime) 播放動畫函數(shù)用法

    接口: 參數(shù) 含義 stateName 動畫狀態(tài)機的某個狀態(tài)名字 layer 第幾層的動畫狀態(tài)機,-1 表示播放第一個狀態(tài)或者第一個哈希到的狀態(tài) normalizedTime 從state動畫進度的百分比(100%)開始播放到結(jié)束 Unity Animator.Play 詳解 基于 Animator 制作一個Cube旋轉(zhuǎn)的幀動畫 在 Cube 上實現(xiàn)調(diào)用 Play(st

    2024年02月13日
    瀏覽(29)
  • unity 動態(tài)獲取Animator 狀態(tài)機中某個動畫片段的播放速度(獲取到速度來計算 播放時長)

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 這個功能主要是因為 每個動畫片段的播放速度不一樣,需要獲取到速度來計算 播放時長。 代碼如下(示例): 好記性不如爛筆頭

    2024年04月11日
    瀏覽(24)
  • 【Unity3D小技巧】Unity3D中Animation和Animator動畫的播放、暫停、倒放控制

    【Unity3D小技巧】Unity3D中Animation和Animator動畫的播放、暫停、倒放控制

    推薦閱讀 CSDN主頁 GitHub開源地址 Unity3D插件分享 簡書地址 我的個人博客 大家好,我是佛系工程師 ☆恬靜的小魔龍☆ ,不定時更新Unity開發(fā)技巧,覺得有用記得一鍵三連哦。 在日常開發(fā)中,常常會遇到要控制動畫的播放、暫停和倒放的情況。 這篇文章就總結(jié)一下, Animation

    2024年02月02日
    瀏覽(70)
  • 微信小程序的無限瀑布流寫法

    微信小程序的無限瀑布流寫法

    微信小程序的無限瀑布流實現(xiàn)總算做完了,換了好幾種方法,過程中出現(xiàn)了各種BUG。 首先官方有瀑布流的插件(Skyline /grid-view),不是原生的我就不想引入,因為我的方塊流頁面已經(jīng)搭好了,引入說不定就要涉及樣式的修改、代碼量的增大等麻煩問題。 H5我雖然也做了瀑布流

    2024年02月07日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包