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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為多個(gè)用戶同步正在進(jìn)行的動(dòng)畫 - 游戲開發(fā)

為多個(gè)用戶同步正在進(jìn)行的動(dòng)畫 - 游戲開發(fā)

茅侃侃 2021-12-23 14:17:43
我目前正在研究命運(yùn)之輪,它通過 node.js 和 websockets同步到每個(gè)連接的設(shè)備。但是我想切斷動(dòng)畫的開始,當(dāng)用戶在滾輪已經(jīng)旋轉(zhuǎn)時(shí)加入,所以它只會(huì)顯示動(dòng)畫的最后幾秒而不改變它的緩動(dòng)。jquery 動(dòng)畫由一個(gè)簡(jiǎn)單的步驟動(dòng)畫組成,它可以旋轉(zhuǎn)輪子。我已經(jīng)嘗試更改步驟的“fx”對(duì)象的參數(shù),如 fx.start 或 fx.pos。而 fx.start 只是動(dòng)畫開始時(shí)的變量,例如 180 度,而 fx.pos 只是一種輸出參數(shù),用于將某些內(nèi)容更改為動(dòng)畫中的給定時(shí)間,例如文本顏色或其他內(nèi)容。但是 fx.pos 值不能改變,也不能改變動(dòng)畫當(dāng)前設(shè)置的位置。我創(chuàng)建了一個(gè)函數(shù)來旋轉(zhuǎn)命運(yùn)之輪兩次,然后它在給定的度數(shù)處停止。我也嘗試改變緩動(dòng),所以它會(huì)是 50% 線性,50% 擺動(dòng),但這會(huì)讓動(dòng)畫看起來很垃圾,因?yàn)橐婚_始它以恒定速度旋轉(zhuǎn),突然它旋轉(zhuǎn)得更快而不是更慢。function spinRoulette(deg, duration = 10000) {  deg = Math.round(deg);  $("img.roulette").animate(      { now: '+='+(720+deg-getRotation()) }, {      duration: duration,      ...      step: function(now, fx) {        if(now >= 360)          now -= 360;        $(this).css("transform", "rotate("+now+"deg)");      }    });}如果持續(xù)時(shí)間少于 10 秒,動(dòng)畫的開始將被切斷。所以,如果服務(wù)器在大約 5 秒前轉(zhuǎn)動(dòng)輪子,我的動(dòng)畫的前 5 秒應(yīng)該被切斷。
查看完整描述

1 回答

?
慕斯王

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊

在任何時(shí)間點(diǎn)趕上緩動(dòng)動(dòng)畫旋轉(zhuǎn)

  • 動(dòng)畫直線 t01,或從0.N1.0(0.6如果在第六第二出最大值10的加入了一個(gè)播放器)$({t: t}).animate({t: 1},

  • 舒適!在任何給定的“現(xiàn)在”時(shí)間點(diǎn),使用自定義緩動(dòng)函數(shù)將當(dāng)前 0.0-1.0 時(shí)間范圍(t_now值)轉(zhuǎn)換為相應(yīng)的緩動(dòng)e_now

  • 將緩動(dòng)e_now結(jié)果乘以所需的結(jié)束度數(shù)


而不是使用的"swing" 利用"linear"讓我們控制了寬松和時(shí)間自定義緩動(dòng)功能(你可以找到許多寬松的片段在網(wǎng)上)。說我們喜歡easeInOutSine

const easeInOutSine = t => -(Math.cos(Math.PI * t) - 1) / 2;

例子

示例 4 人,一個(gè)人在旋轉(zhuǎn)輪子,其他人在初始旋轉(zhuǎn)開始2、4.5 和 8.7 秒加入表演

const easeInOutSine = t => -(Math.cos(Math.PI * t) - 1) / 2;


function spinRoulette(sel, deg, duration = 10000) {

  const $el = $(sel);

  const maxDuration = 10000;

  const deg_end = 720 + Math.round(deg);  // 2 revolutions + server-generated degrees

  const time = maxDuration - duration;    // Start time in ms

  const t = time / maxDuration;           // Start time to 0.0-1.0 range 


  $({t: t}).animate({t: 1}, {             // Custom jQuery anim. from 0.N to 1.0

    duration: duration,

    easing: "linear",                     // We need a linear 0.0 to 1.0

    step: function(t_now) {

      const e_now = easeInOutSine(t_now); // Current easing

      const deg_now = e_now * deg_end;    // Current degrees

      $el.css({transform: `rotate(${ deg_now }deg)`});

    }

  });

}


// Person 1 spins!

spinRoulette("#r1", 45);

// Person 2 joins the room after 2s

setTimeout(() => spinRoulette('#r2', 45, 10000 - 2000), 2000);

// Person 3 joins the room after 4.5s

setTimeout(() => spinRoulette('#r3', 45, 10000 - 4500), 4500);

// Person 4 joins the room after 8.7s

setTimeout(() => spinRoulette('#r4', 45, 10000 - 8700), 8700);

img {height: 120px; display: inline-block;}

<img id="r1" src="https://i.stack.imgur.com/bScK3.png">

<img id="r2" src="https://i.stack.imgur.com/bScK3.png">

<img id="r3" src="https://i.stack.imgur.com/bScK3.png">

<img id="r4" src="https://i.stack.imgur.com/bScK3.png">


<script src="//code.jquery.com/jquery-3.4.1.min.js"></script>


在上面的例子中,最后,你可以注意到(除了一些奇怪的視錯(cuò)覺)輪子在任何時(shí)間點(diǎn)以正確的旋轉(zhuǎn)狀態(tài)追趕,速度,并且所有的都以相同的緩動(dòng)同時(shí)完成,在確切的預(yù)定義deg_end學(xué)位。


查看完整回答
反對(duì) 回復(fù) 2021-12-23
  • 1 回答
  • 0 關(guān)注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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