国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

朋友,這里有個(gè)倉(cāng)庫(kù)需要你 PR 一下

roadtogeek / 1623人閱讀

摘要:發(fā)現(xiàn)倉(cāng)庫(kù)被了很多次,因此下定決心要好好的把代碼整理一下,方便大家查看代碼以及更加愉快的。雖然這個(gè)簡(jiǎn)介有點(diǎn)短,但是該篇的目的并不在于讓大家了解這個(gè)矩陣動(dòng)畫,而是想讓大家一起來(lái)豐富這個(gè)倉(cāng)庫(kù)。

前段時(shí)間,發(fā)布了一篇文章:學(xué)不動(dòng)了,來(lái)點(diǎn)有趣的吧。發(fā)現(xiàn) github 倉(cāng)庫(kù)被 frok 了很多次,因此下定決心要好好的把代碼整理一下,方便大家查看代碼以及更加愉快的 Pull Request

簡(jiǎn)介

該項(xiàng)目名叫 matrixchange ,編寫的目的在于方便開(kāi)發(fā)者實(shí)現(xiàn)矩陣動(dòng)畫,當(dāng)然該項(xiàng)目已經(jīng)發(fā)布到 npm ,使用 npm/yarn 安裝即可。

該庫(kù)為開(kāi)發(fā)者提供了一個(gè)數(shù)組和一個(gè)函數(shù),具體的文檔可以查看上一篇文章,或是在 github 上查看更為詳細(xì)的內(nèi)容。

ok 簡(jiǎn)介到此完畢。雖然這個(gè)簡(jiǎn)介有點(diǎn)短,但是該篇的目的并不在于讓大家了解這個(gè)矩陣動(dòng)畫,而是想讓大家一起來(lái)豐富這個(gè)倉(cāng)庫(kù)。

接下來(lái)進(jìn)入正題。

動(dòng)畫形式 何為矩陣動(dòng)畫?

簡(jiǎn)單來(lái)說(shuō)就是有一個(gè)矩陣,然后讓它動(dòng)起來(lái),效果如下:

這就是一個(gè)簡(jiǎn)單的矩陣動(dòng)畫,動(dòng)畫形式如何?

從右上到左下按照斜線進(jìn)行運(yùn)動(dòng)

那么動(dòng)畫效果呢?

翻轉(zhuǎn)消失,然后翻轉(zhuǎn)呈現(xiàn)

animite.css 可以解決絕大多數(shù)的動(dòng)畫效果,而且 animite.css 中的動(dòng)畫也大致可以分為入場(chǎng)動(dòng)畫好出場(chǎng)動(dòng)畫兩個(gè)大類,既然如此,那么我們實(shí)現(xiàn)矩陣動(dòng)畫中需要的動(dòng)畫效果迎刃而解,我們僅需要豐富動(dòng)畫形式即可。

抽象

既然我們準(zhǔn)備批量實(shí)現(xiàn)我們的動(dòng)畫形式,那么抽象是必要的,按照之前給的效果圖,這個(gè)是我抽象出來(lái)的對(duì)象:

{
  interval: 140,
  duration: 1000,
  init(row, col) {
    this.row = row;
    this.col = col;
    this.count = col;
  },
  check(i, j) {
    return j - i === this.count;
  },
  next() {
    this.count--;
  },
  end() {
    return this.count === -this.row;
  }
}
字段名 類型 代表的含義
interval number 每次(獲取需要運(yùn)動(dòng)的點(diǎn))的時(shí)間間隔
duration number transition 動(dòng)畫專用,用于設(shè)置 transition 的持續(xù)時(shí)間,animate 動(dòng)畫不需要
init Function 每次動(dòng)畫開(kāi)始前會(huì)調(diào)用,用于初始化對(duì)象信息
check Function 用于確定每次需要運(yùn)動(dòng)的點(diǎn)
next Function 每次(獲取需要運(yùn)動(dòng)的點(diǎn))后都會(huì)調(diào)用該函數(shù),用于重置判斷條件
end Function 判斷該動(dòng)畫是否結(jié)束

動(dòng)畫具體的執(zhí)行流程為

將矩陣的行列傳入 init 函數(shù)

設(shè)置以 interval 為時(shí)間間隔的定時(shí)器

遍歷矩陣中所有的點(diǎn),傳入 check 函數(shù),確定該點(diǎn)是否需要運(yùn)動(dòng)

執(zhí)行 next 函數(shù)

執(zhí)行 end 函數(shù),若函數(shù)返回 true 則取消定時(shí)器,動(dòng)畫結(jié)束

結(jié)合上面的內(nèi)容,不難想象出,剛剛的對(duì)象觸發(fā)矩陣中的點(diǎn)如下(以 row = 7; col = 9 為例)

定時(shí)器第一次觸發(fā)時(shí),運(yùn)動(dòng)的塊為 [0, 8]

定時(shí)器第二次觸發(fā)時(shí),運(yùn)動(dòng)的塊為 [0, 7],[1, 8]

定時(shí)器第三次觸發(fā)時(shí),運(yùn)動(dòng)的塊為 [0, 6],[1, 7],[2, 8]

...

也就是從右上到左下,每一次動(dòng)一條斜線。也是實(shí)現(xiàn) gif 圖中的動(dòng)畫形式,配合 animate.css 就能完成效果圖展示的效果。

注意點(diǎn)

init/check/next/end 函數(shù)中的 this 代表本對(duì)象,也就是擁有該方法的對(duì)象

this 下也可設(shè)置任意值,這是 js 的特性,js 的對(duì)象非固定字段,所有設(shè)置任意值都 ok

最好不要將值設(shè)置到對(duì)象外部,避免互相影響,所以為了方便調(diào)用,最好都設(shè)置在 this 對(duì)象下,如上述的 row/col/count

由于動(dòng)畫效果會(huì)被調(diào)用 n 次,所以要記得在 init 方法內(nèi)將自定義設(shè)置在 this 下的值進(jìn)行初始化。避免由于上次動(dòng)畫修改了某值,但沒(méi)有初始化導(dǎo)致動(dòng)畫效果在第 2 次時(shí)有變化。

定義

既然我們是用 typescript 進(jìn)行開(kāi)發(fā),該對(duì)象的完整定義如下:

export type modeType = {
  interval: number;
  duration?: number;
  [propName: string]: any;
  init(row: number, col: number): void;
  check(i: number, j: number): boolean;
  next(): void;
  end(): boolean;
}

只要符合該定義的對(duì)象,就可以認(rèn)為是一個(gè)符合要求的動(dòng)畫形式,但是動(dòng)畫的執(zhí)行是否完整(動(dòng)畫執(zhí)行是否將所有矩陣中的點(diǎn)都觸發(fā)了一遍),不在庫(kù)的考慮范圍內(nèi),這點(diǎn)需要你,也就是該動(dòng)畫形式的編寫者確定。

開(kāi)發(fā)環(huán)境

ok 看到這里是否已經(jīng)有些騷氣的一批的動(dòng)畫在你的腦海中呈現(xiàn),很想實(shí)現(xiàn)它吧~

那么如何來(lái)驗(yàn)證你的動(dòng)畫是否完整呢?

方式一

安裝好 matrixchange 后,按照 github 上提供的文檔,先將矩陣初始化好,然后調(diào)用 movePoint 將你寫好的對(duì)象傳入即可。

什么?麻煩?對(duì)!

確實(shí)挺麻煩的,還要自己寫個(gè) html 可能還要配置 webpack 開(kāi)發(fā)環(huán)境等一系列雜七雜八的東西,寫個(gè)動(dòng)畫形式為什么還要配置這么多無(wú)關(guān)緊要的步驟呢?其實(shí)我都已經(jīng)給你配置好啦~

方式二

按照以下步驟

git clone https://github.com/acccco/matrixChange.git 

先將項(xiàng)目克隆到本地,當(dāng)然可以先 fork 然后克隆你自己的項(xiàng)目,推薦先 fork

npm i
# or
yarn

安裝項(xiàng)目依賴。

npm run dev

運(yùn)行程序,然后瀏覽器打開(kāi) http://localhost:8080/ 即可。

對(duì)了,那該在哪里編寫你的運(yùn)動(dòng)形式呢?

項(xiàng)目下有 dev 文件夾,在文件夾內(nèi),我已經(jīng)寫好了布局,寫好了初始化方法,你所要做的就是找到 movePoint 這個(gè)方法,然后將該方法的第一次參數(shù)改成你所寫好的對(duì)象即可。

什么?我原來(lái)文件中 movePoint 的第一個(gè)參數(shù) line.rt2lb 是什么鬼?

說(shuō)明一下,我將已經(jīng)實(shí)現(xiàn)的效果按照分類放在了 src/mode 文件夾,四個(gè)方向分別使用縮寫代替。

l - 左
r - 右
t - 上
b - 下
i - 內(nèi)部
o - 外部
R - 代表前面所表示運(yùn)動(dòng)的反向
Anti - 逆時(shí)針

line.rt2lb 所代表的運(yùn)動(dòng)形式為:從右上到左下的線性運(yùn)動(dòng)。

src/mode 文件夾中已經(jīng)實(shí)現(xiàn)的有 6 大類,32 種動(dòng)畫形式。大概說(shuō)明一下

文件名 代表意思 例子 說(shuō)明
line.js 線性運(yùn)動(dòng) line.r2l line.rt2lb 每次運(yùn)動(dòng)一條直線
L.js L 形運(yùn)動(dòng) L.lt2rb L.lt2rbR 每次運(yùn)動(dòng)一個(gè) L 形狀的區(qū)域
circle.js 回字形運(yùn)動(dòng) circle.i2o 每次運(yùn)動(dòng)一圈
spread.js 擴(kuò)散運(yùn)動(dòng) spread.random 由一個(gè)中心點(diǎn)進(jìn)行擴(kuò)散,每次擴(kuò)散一圈
loop.js 繞圈運(yùn)動(dòng) loop.lt 由某個(gè)頂點(diǎn)進(jìn)行繞圈運(yùn)動(dòng)
random.js 隨機(jī)運(yùn)動(dòng) random.t2b 線性隨機(jī)運(yùn)動(dòng)

更為詳細(xì)的介紹可以查看 src/mode 中的具體文件,大家可以將動(dòng)畫形式放入 movePoint 中查看具體的動(dòng)畫效果。

當(dāng)然,已經(jīng)實(shí)現(xiàn)的運(yùn)動(dòng)形式大家也可以看看有沒(méi)有更加簡(jiǎn)單的編寫方式,優(yōu)化原本的代碼。

總之,有了想法那就開(kāi)始行動(dòng)吧,不管是新想法,還是優(yōu)化我原本的實(shí)現(xiàn),都?xì)g迎 Pull Request。當(dāng)然可能有了想法,但時(shí)間上不允許,也可以在 Issues 上記錄,大家可以一起幫你實(shí)現(xiàn)。

最后

最后再次提供 github 地址,歡迎大家 Pull Request

喜歡的話 可以點(diǎn)個(gè) star 哦,感謝~

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/114777.html

相關(guān)文章

  • 朋友這里有個(gè)倉(cāng)庫(kù)需要 PR 一下

    摘要:發(fā)現(xiàn)倉(cāng)庫(kù)被了很多次,因此下定決心要好好的把代碼整理一下,方便大家查看代碼以及更加愉快的。雖然這個(gè)簡(jiǎn)介有點(diǎn)短,但是該篇的目的并不在于讓大家了解這個(gè)矩陣動(dòng)畫,而是想讓大家一起來(lái)豐富這個(gè)倉(cāng)庫(kù)。 前段時(shí)間,發(fā)布了一篇文章:學(xué)不動(dòng)了,來(lái)點(diǎn)有趣的吧。發(fā)現(xiàn) github 倉(cāng)庫(kù)被 frok 了很多次,因此下定決心要好好的把代碼整理一下,方便大家查看代碼以及更加愉快的 Pull Request。 簡(jiǎn)介 ...

    ISherry 評(píng)論0 收藏0
  • 小哥哥小姐姐看過(guò)來(lái),這里有個(gè)組件庫(kù)需要您簽收一下

    摘要:如果你想減少包大小,你可以這樣引入事實(shí)上,每個(gè)組件都是支持單獨(dú)安裝的,我們也推薦你使用這種方式引入組件。以下是運(yùn)行示例后各界面的截圖組件圖標(biāo)右上角的圓形徽標(biāo)數(shù)字。 1. 前言 一直以來(lái)都想做個(gè)組件庫(kù),一方面是對(duì)工作中常遇問(wèn)題的總結(jié),另一方面也確實(shí)能夠提升工作效率(誰(shuí)又不想造一個(gè)屬于自己的輪子呢~),于是乎就有了本文的主角兒rn-components-kit。 市面上web的UI組件庫(kù)如...

    Alan 評(píng)論0 收藏0
  • GitOps:Kubernetes多集群環(huán)境下的高效CICD實(shí)踐

    摘要:在容器領(lǐng)域內(nèi),已經(jīng)成為了容器編排和管理的社區(qū)標(biāo)準(zhǔn)。就是的邏輯擴(kuò)展,它的核心目標(biāo)是為了更加高效和安全的應(yīng)用發(fā)布。第二個(gè)問(wèn)題就是,生產(chǎn)環(huán)境的發(fā)布權(quán)限一般都是需要嚴(yán)格控制的,通常只有應(yīng)用管理員或者運(yùn)維管理員才有生產(chǎn)發(fā)布權(quán)限。 為了解決傳統(tǒng)應(yīng)用升級(jí)緩慢、架構(gòu)臃腫、不能快速迭代、故障不能快速定位、問(wèn)題無(wú)法快速解決等問(wèn)題,云原生這一概念橫空出世。云原生可以改進(jìn)應(yīng)用開(kāi)發(fā)的效率,改變企業(yè)的組織結(jié)構(gòu),甚...

    wdzgege 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<