第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Jquery animate中的step方法問題

Jquery animate中的step方法問題

阿晨1998 2018-10-10 20:19:14
是這樣的。因為比較喜歡js,而且js數(shù)組也好操作,想用網(wǎng)頁寫一個電梯模擬算法,用到了animate來表現(xiàn)動畫效果。最開始的時候我遇到了這樣的問題。假設(shè)電梯從6樓下降到1樓,那么就要生成一個從6到1樓的勻速運(yùn)動動畫,這個動畫是一個線程。但是如果下降到了4樓的時候,突然3樓有人要上電梯,那就必須得在3樓停下來。如果在這個線程之后直接調(diào)用去3樓的線程,兩個線程不會互相覆蓋,而是會互相累加,它會先到1樓后上3樓,但如果在接收到3樓請求的時候立刻調(diào)用stop(true)方法停止動畫并且重新生成一個動畫的話,在停止的那里會卡頓一下,這樣看起來好像電梯故障,不是想要的效果。經(jīng)過一番查資料,我找到了step這個方法,先貼一下網(wǎng)上的資料代碼。借用,無意冒犯這個step方法相當(dāng)于把一個動畫分解成無數(shù)小段,每執(zhí)行一個小段就會調(diào)用一遍。并且提供了修改fx.now和fx.end的值的機(jī)會,我以為這就是我要的方法。只要接收到3樓請求的時候,修改fx.end為3樓的位置就行了。緊接著新的問題就出來了。fx.now雖然也是fx的一個屬性,但這個屬性不是死的,經(jīng)過我查詢JQuery源碼,發(fā)現(xiàn)它是根據(jù)start、end以及移動位置百分比來計算的,一旦修改了end,now值就會改變,造成電梯突然往上抽搐一下接著下降的效果。很抱歉啰嗦了這么多,只是為了把問題說得更清楚。有沒有dalao對這個方法比較熟悉,能不能幫忙想個解決辦法,或者做這個電梯小程序還有沒有別的表現(xiàn)方式?謝謝dalao
查看完整描述

1 回答

?
嗶嗶one

TA貢獻(xiàn)1854條經(jīng)驗 獲得超8個贊

今天被迫查了JQuery,又經(jīng)過一番嘗試,終于找到了解決辦法。大概有我這種問題的人很少吧,不過我還是貼一下答案吧。
雖然step提供了修改fx的屬性值的一個機(jī)會,但是并不是直接修改就能解決的。在這里,fx.start和fx.end都是一成不變的,而fx.pos這個屬性,代表的是動畫當(dāng)前狀態(tài)在整個動畫過程中的百分比,它的值從0到1,中間是以0.為開頭的一長串小數(shù)。而fx.now代表的就是動畫當(dāng)前屬性改變的值。
經(jīng)過一番查源碼,得到這樣一個公式:fx.now = (fx.end - fx.start) * fx.pos + fx.start。倘若修改了fx.end的話,now值有可能會改變,就會造成中途動畫突然抽搐一下的情況。所以需要修改fx.start的值。假設(shè)修改后fx.end的值為end1,修改后fx.start,設(shè)其為start1,那么
start1 = (fx.start - fx.pos * (fx.start - (fx.end - end1)))/(1 - fx.pos)
并且start只能賦值一次,接下來的step方法需要沿用賦值后的start。也就是說,設(shè)一個初始變量

var flag = truestep:function(now,fx){
    fx.end = end1;//這一步用來修改fx.end的值,請根據(jù)自己需要去寫。    if(flag){
        fx.start = (fx.start - fx.pos * (fx.start - (fx.end - end1)))/(1 - fx.pos);
        flag = false;
    }
}


查看完整回答
反對 回復(fù) 2018-11-13
  • 1 回答
  • 0 關(guān)注
  • 523 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號