Javascript アニメーションの実装原則の簡単な分析_JavaScript スキル
次のようなアニメーション機能要件があるとします。div の幅を 100px から 200px に変更します。書かれたコードは次のようになります:
function animate1(要素, endValue, 継続時間) {
var startTime = new Date(),
startValue = parseInt(element.style.width),
ステップ = 1;
var timerId = setInterval(function() {
var nextValue = parseInt(element.style.width) step;
element.style.width = nextValue 'px';
If (nextValue >= endValue) {
clearInterval(timerId);
// アニメーションの表示に時間がかかります
element.innerHTML = 新しい日付 - startTime;
}
}, 期間 / (endValue - startValue) * ステップ);
}
animate1(document.getElementById('test1'), 200, 1000);
原則として、200px に達するまで一定の間隔で 1px ずつ増やしていきます。ただし、アニメーション終了後の表示時間は1秒以上(通常1.5秒程度)かかります。その理由は、setInterval が厳密に実行間隔を保証するものではないためです。
もっと良い方法はありますか?小学校の算数の問題を見てみましょう:
建物 A と建物 B は 100 メートル離れています。ある人が建物 A から建物 B まで一定の速度で歩き、目的地に到着するまで 3 分で建物 A からどのくらい離れていますか。
等速運動のある瞬間の距離を求める計算式は、「距離 * 現在時刻 / 時刻」です。したがって、答えは 100 * 3 / 5 = 60 となるはずです。
この質問によってもたらされたインスピレーションは、特定の瞬間における距離が特定の公式によって計算できるということです。同様に、アニメーション プロセス中の特定の瞬間の値も、累積する代わりに数式を使用して計算できます。
function animate2(要素, endValue, 継続時間) {
var startTime = new Date(),
startValue = parseInt(element.style.width);
var timerId = setInterval(function() {
var パーセント = (新しい日付 - 開始時刻) / 期間;
var stepValue = startValue (endValue - startValue) * パーセント;
element.style.width = stepValue 'px';
if (パーセンテージ >= 1) {
clearInterval(timerId);
element.innerHTML = 新しい日付 - startTime;
}
}, 13);
}
animate2(document.getElementById('test2'), 200, 1000);
この改善により、アニメーションの実行時間の誤差は最大でも 10 ミリ秒にとどまることがわかります。しかし、問題は完全には解決されていません。ブラウザ開発ツールで test2 要素を確認すると、test2 の最終的な幅が 200px を超える可能性があることがわかります。 animate2 関数のコードを注意深く調べると、次のことがわかります。
1.percentage の値は 1 より大きい場合がありますが、これは Math.min を通じて最大値を制限することで解決できます。
2. パーセンテージの値が 1 を超えないことが保証されている場合でも、endValue または startValue が 10 進数である限り、(endValue - startValue) * パーセンテージの値ではエラーが発生する可能性があります。これは、Javascript の 10 進数演算の精度が低いためです。足りない。実際、確認したいのは最終値の精度なので、パーセンテージが 1 の場合は、endValue を直接使用します。
したがって、animate2 関数のコードは次のように変更されます:
function animate2(要素, endValue, 継続時間) {
var startTime = new Date(),
startValue = parseInt(element.style.width);
var timerId = setInterval(function() {
// パーセンテージが 1 を超えないようにしてください
varpercent = Math.min(1, (新しい日付 - 開始時刻) / 期間);
var stepValue;
If (パーセンテージ >= 1) {
// 最終値の精度を確保します
stepValue = endValue;
} else {
stepValue = startValue (endValue - startValue) * パーセント;
}
element.style.width = stepValue 'px';
if (パーセンテージ >= 1) {
clearInterval(timerId);
element.innerHTML = 新しい日付 - startTime;
}
}, 13);
}
最後の質問が 1 つあります。setInterval の間隔が 13ms に設定されているのはなぜですか?その理由は、現在のモニターのリフレッシュ レートは一般に 75 Hz を超えないためです (つまり、1 秒あたり 75 回リフレッシュされる、つまり、約 13 ミリ秒ごとにリフレッシュされる) ため、間隔をリフレッシュ レートと同期させる方がよいでしょう。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック








![PowerPoint でアニメーションが機能しない [修正]](https://img.php.cn/upload/article/000/887/227/170831232982910.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
プレゼンテーションを作成しようとしていますが、アニメーションを追加できませんか? Windows PC 上の PowerPoint でアニメーションが機能しない場合は、この記事が役に立ちます。これは多くの人が不満を抱く一般的な問題です。たとえば、Microsoft Teams でのプレゼンテーション中または画面録画中にアニメーションが停止する場合があります。このガイドでは、Windows 上の PowerPoint で動作しないアニメーションを修正するのに役立つさまざまなトラブルシューティング テクニックを説明します。 PowerPoint アニメーションが機能しないのはなぜですか? Windows 上で PowerPoint のアニメーションが機能しない問題を引き起こす可能性のある考えられる理由として、次のようなことが考えられます。

私たちは日々の仕事で ppt をよく使用しますが、ppt のすべての操作機能に精通していますか?例: ppt でアニメーション効果を設定する方法、切り替え効果を設定する方法、各アニメーションの効果時間はどれくらいですか?各スライドは自動的に再生されますか、ppt アニメーションの開始と終了などはできますか? 今回は、まず ppt アニメーションの開始と終了の具体的な手順を共有します。以下にあります。友達、見に来てください。見て! 1. まず、コンピューターで ppt を開き、テキスト ボックスの外側をクリックしてテキスト ボックスを選択します (下図の赤い丸で示されているように)。 2. 次に、メニューバーの[アニメーション]をクリックし、[消去]効果を選択します(図の赤丸部分)。 3. 次に、[

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

当サイトは1月26日、国産3Dアニメ映画『エル・ランシェン:深海竜』が最新スチールを公開し、7月13日に公開されると正式に発表したと報じた。 「Er Lang Shen: The Deep Sea Dragon」は、Mihuxing (Beijing) Movie Co., Ltd.、Horgos Zhonghe Qiancheng Film Co., Ltd.、Zhejiang Hengdian Film Co., Ltd.、Zhejiang Gongying Film によって制作されていることがわかります。 Tianhuo Technology Co., Ltd.とHuawen Image (Beijing) Film Co., Ltd.が制作し、Wang Junが監督したこのアニメーション映画は、当初、2022年7月22日に中国本土で公開される予定でした。 。このサイトのあらすじ:授与神の戦いの後、蒋子耶が神々を分割するために「授与神リスト」を持ち出し、授与神リストは天宮によって九州の深海に封印された秘密の領域。実は、授与神リストには神職以外にも強力な悪霊が数多く封印されている。

当サイトのニュースによると、宮崎駿監督のアニメーション映画『紅の豚』が、公開日を2024年1月16日まで延長すると発表した。本サイトは以前、『紅の豚』が全国芸術連盟特別ラインシネマで上映開始されたことを報じた。 11月17日に公開され、累計興行収入は2,000万10,000を超え、Doubanスコアは8.6、4つ星と5つ星のレビューの85.8%を獲得した。 『紅の豚』はスタジオジブリ制作、宮崎駿監督、森山守山、加藤登紀子、大塚明夫、岡村明美らが吹き替えに参加し、1992年に日本で公開された。この映画は宮崎駿の漫画『飛行船の時代』を原作とし、魔法で豚に変えられたイタリア空軍のエースパイロット、ポロック・ローゼンの物語を描いている。その後、彼は賞金稼ぎとなり、空中強盗と戦い、周囲の人々を守りました。あらすじ: ローゼンは第一次世界大戦の兵士です

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

トップの無料 AI アニメーション アート ジェネレーターを見つけたい場合は、検索を終了することができます。アニメアートの世界は、そのユニークなキャラクターデザイン、魅惑的な色彩、魅惑的なプロットで何十年にもわたって視聴者を魅了してきました。ただし、アニメアートの作成には才能、スキル、そして多くの時間が必要です。しかし、人工知能 (AI) の継続的な発展により、最高の無料 AI アニメーション アート ジェネレーターの助けを借りて、複雑なテクノロジーを深く掘り下げることなくアニメーション アートの世界を探索できるようになりました。これにより、創造性を発揮するための新たな可能性が開かれます。 AIアニメアートジェネレーターとは? AI アニメーション アート ジェネレーターは、高度なアルゴリズムと機械学習技術を利用して、アニメーション作品の広範なデータベースを分析します。これらのアルゴリズムを通じて、システムはさまざまなアニメーション スタイルを学習し、識別します。

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用
