關於緩動動畫函數的封裝

来源:https://www.cnblogs.com/Lzxgg-xl/archive/2019/01/11/10257638.html
-Advertisement-
Play Games

♥緩動動畫函數 · 之前我在博客上寫過勻速的動畫函數 :https://www.cnblogs.com/Lzxgg-xl/p/10227127.html · 與勻速的相比 有相同的地方 也有不同的地方 我在這裡就簡單的寫一遍 一. 首先還是一樣,因為它是個函數體我們要傳參 即 : 1.移動的元素 2 ...


♥緩動動畫函數


 

· 之前我在博客上寫過勻速的動畫函數 :https://www.cnblogs.com/Lzxgg-xl/p/10227127.html

· 與勻速的相比  有相同的地方 也有不同的地方 我在這裡就簡單的寫一遍

 

  一. 首先還是一樣,因為它是個函數體我們要傳參  即 : 

    1.移動的元素

    2.移動的目的地

   

   二. 和勻速的一樣  要先清理定時器 不然會發生點擊多次移動的速度越來越快的狀況

     1.因為每點擊一次按鈕 就會多生成一個定時器   生成的多了之後 速度就會加快 因為如果兩個定時器一起進行 原本40的速度就會變成80

     2.因為我們寫的是緩動的動畫效果  所以可能視覺上看的並不是很明顯 但是我們要註意誤差  要做到儘量嚴謹

  三. 和勻速不同的地方

       每次移動的距離是變化的   這個的具體實現是這樣的:

         每次令step = (target-current)/10  

         這樣會出現有小數存在的情況 然而如果一直有小數 我們一直無法到達重點 就會是一個死迴圈 

         如果step是正數  我們向下取整 那麼也是永遠到不了的 因為到了0.x的小數的時候你向下取整  永遠是0  也止步不前

         所以說 正數的話要向上取整   負數的話向下取整就可以解決這個問題

      下麵給出代碼:

    

function animate(element, target) {
    //先清理定時器
    clearInterval(element.timeID);


//緩動動畫函數的封裝
    element.timeID= setInterval(
        function () {
            var current = element.offsetLeft;
            var step = (target - current) / 10;
            //如果step 是正數 那麼取的時候要向上取整  不然永遠無法到達目的地
            //  如果step 是負數 那麼取得時候要向下取整  不然永遠無法到達目的地
            step = step > 0 ? Math.ceil(step) : Math.floor(step);
            current += step;
            element.style.left = current + "px";
            if (current == target){
                clearInterval(element.timeID);
            }
            console.log("當前距離是"+ current +",每一步移動"+Math.abs(step));
       //這個寫入操作台的呢 是為了防止有錯誤 就是說用來檢查自己寫的對不對 如果你寫熟練了那麼可以去掉 } ,
20) }

 

         


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、UITableView 的編輯模式 進入編輯模式 代碼體現 // 設置 editing 屬性 tableView?.editing = true // 這個設置的時候是有動畫效果的 tableView.setEditing(true, animated: true) // 我一般喜歡的設置方式 ...
  • 目的:handle的出現主要是為瞭解決線程間通訊。 舉個例子,android是不允許在主線程中訪問網路,因為這樣會阻塞主線程,影響性能,所以訪問網路都是放在子線程中執行,對於網路返回的結果則需要顯示在主線程中,handler就是連接主線程和子線程的橋梁。 1.handler基本使用方法 看一下使用方 ...
  • 今天做項目的時候遇到一個需求,就是子view視圖彈出時,屏蔽掉父view的所有手勢,然後想到用 UIGestureRecognizerDelegate代理方法,中間省一些文字(無奈臉),言歸正傳,NSStringFromClass其實是用來判斷類型的,看代碼 好尷尬的我。。。。屏蔽掉父view的所有 ...
  • MIUI12系統能有啥方法開啟root超級許可權?各位都清楚,Android機器有root超級許可權,如果手機開啟root相關許可權,可以實現更好的功能,舉例子,各位公司的營銷部門,使用某些營銷軟體都需要在root超級許可權下執行,如果手機無能獲的root的許可權,則沒辦法正常使用相關的功能。 MIUI12系 ...
  • 背景: 由於,項目需要,需要進行視頻通信,把a的畫面,轉給b。 運維部署: APP1:編碼攝像頭採集的數據,並且發送數據到服務端 APP2:從服務端,拉取數據,並且進行解碼顯示 服務端:接收APP1提交的數據,發送APP1提交數據到APP2 應用說明: APP1:camera = Camera.op ...
  • 1.CommonJS 中的 require/exports 和 ES6 中的 import/export 區別? 2.項目做過哪些性能優化? 3.js 非同步載入的方式? 4.get與post 通訊的區別? 5.為什麼虛擬 dom 會提高性能? ...
  • 1 function formatDateTime(date) { 2 var y = date.getFullYear(); 3 var m = date.getMonth() + 1; 4 m = m < 10 ? ('0' + m) : m; 5 var d = date.getDate();... ...
  • 固定導航欄 前言:很多網站都有這種網頁的效果:滑動瀏覽器右側的滾動條,導航欄會一直處於最上方 下麵我就來簡單實現以下這個功能 一.首先我們來寫一下html的結構: 二.我們來簡單寫一下樣式 這個結構可以說是簡單明瞭,由三部分組成 頂部 導航欄 還有主體部分 但是我們並不打算繼續寫下去 我們簡單的用樣 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...