Vue と Canvas を使用してクールな時計およびカウントダウン アプリケーションを作成する方法
はじめに:
現代の Web 開発では、Vue フレームワークの人気と Canvas テクノロジの広範な応用により、次のことを組み合わせることができます。 Vue と Canvas を使用して、息を呑むようなさまざまなアニメーション効果を作成します。この記事では、Vue と Canvas を使用してクールな時計およびカウントダウン アプリケーションを作成する方法に焦点を当て、読者がフォローして学習できる対応するコード例を提供します。
1. 時計アプリケーション
- Vue インスタンスと Canvas 要素の作成
まず、Vue インスタンスと Canvas 要素を作成する必要があります。 Vue のデータでは、現在時刻を表す変数 currentTime
を作成し、ページが読み込まれた後に実装されているフック関数を使用して現在時刻を取得し、currentTime
に代入します。 HTML テンプレートで、Canvas 要素をページに挿入します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <template>
<div>
<canvas id= "clockCanvas" ></canvas>
</div>
</template>
<script>
export default {
data() {
return {
currentTime: null
};
},
mounted() {
this.currentTime = new Date ();
this.drawClock();
},
methods: {
drawClock() {
}
}
};
</script>
|
ログイン後にコピー
- 時計を描画する
drawClock
メソッドでは、Canvas API を使用して時計のさまざまな部分を描画します。まず、Canvas オブジェクトを取得し、その幅と高さ、描画環境を設定する必要があります。
1 2 3 4 | const canvas = document.getElementById( 'clockCanvas' );
const ctx = canvas.getContext( '2d' );
const width = canvas.width;
const height = canvas.height;
|
ログイン後にコピー
次に、時計の色、太さ、フォント、針の色などを描画するためのスタイルを設定します。次に、手を正確に描くために、時、分、秒の角度を把握する必要があります。
1 2 3 4 5 6 7 | const hour = this.currentTime.getHours();
const minute = this.currentTime.getMinutes();
const second = this.currentTime.getSeconds();
const hourAngle = ((hour % 12) + minute / 60 + second / 3600) * 30 * Math.PI / 180;
const minuteAngle = (minute + second / 60) * 6 * Math.PI / 180;
const secondAngle = second * 6 * Math.PI / 180;
|
ログイン後にコピー
次に、Canvas 描画メソッドを使用して、時計のさまざまな部分を描画します。たとえば、ctx.arc()
メソッドを使用して時計の外側の円を描画し、ctx.moveTo()
メソッドと ctx.lineTo() メソッドを使用できます。
ポインタを描画するメソッド。描画後、 ctx.ストローク()
メソッドを呼び出してストロークする必要があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | ctx.beginPath();
ctx.arc(width / 2, height / 2, width / 2 - 10, 0, 2 * Math.PI);
ctx.lineWidth = 10;
ctx.strokeStyle = 'black' ;
ctx.stroke();
ctx.beginPath();
ctx.moveTo(width / 2, height / 2);
ctx.lineTo(width / 2 + Math.sin(hourAngle) * (width / 2 - 50), height / 2 - Math. cos (hourAngle) * (width / 2 - 50));
ctx.lineWidth = 6;
ctx.strokeStyle = 'black' ;
ctx.stroke();
ctx.beginPath();
ctx.moveTo(width / 2, height / 2);
ctx.lineTo(width / 2 + Math.sin(minuteAngle) * (width / 2 - 30), height / 2 - Math. cos (minuteAngle) * (width / 2 - 30));
ctx.lineWidth = 4;
ctx.strokeStyle = 'black' ;
ctx.stroke();
ctx.beginPath();
ctx.moveTo(width / 2, height / 2);
ctx.lineTo(width / 2 + Math.sin(secondAngle) * (width / 2 - 20), height / 2 - Math. cos (secondAngle) * (width / 2 - 20));
ctx.lineWidth = 2;
ctx.strokeStyle = 'red' ;
ctx.stroke();
|
ログイン後にコピー
最後に、requestAnimationFrame()
メソッドを使用して、クロックのリアルタイム更新効果を実現する必要があります。
1 | requestAnimationFrame(this.drawClock);
|
ログイン後にコピー
この時点で、時計アプリケーションの作成と描画ロジックが完了しました。
2. カウントダウン アプリケーション
- Vue インスタンスと Canvas 要素の作成
時計アプリケーションと同様に、Vue インスタンスと Canvas 要素も作成する必要があります。 Vue のデータでは、カウントダウンの残り時間を表す変数 remainingTime
を作成し、実装されたフック関数を通じて、カウントダウンの終了時刻を 7 日後に設定し、カウントダウン ロジックを開始します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <template>
<div>
<canvas id= "countdownCanvas" ></canvas>
</div>
</template>
<script>
export default {
data() {
return {
remainingTime: null
};
},
mounted() {
const endTime = new Date ();
endTime.setDate(endTime. getDate () + 7);
this.startCountdown(endTime);
this.drawCountdown();
},
methods: {
startCountdown(endTime) {
},
drawCountdown() {
}
}
};
</script>
|
ログイン後にコピー
- カウントダウン ロジック
startCountdown
メソッドでは、カウントダウンの残り時間を計算し、remainingTime
に保存する必要があります。変数で。
1 2 3 | const now = new Date ();
const remainingTime = Math. floor ((endTime - now) / 1000);
this.remainingTime = remainingTime;
|
ログイン後にコピー
カウントダウン効果を実現するには、setInterval()
メソッドを使用して残り時間を定期的に更新し、残り時間がゼロになったらタイマーをクリアします。
1 2 3 4 5 6 7 | this.timer = setInterval(() => {
if (this.remainingTime > 0) {
this.remainingTime--;
} else {
clearInterval(this.timer);
}
}, 1000);
|
ログイン後にコピー
- Draw Countdown
drawCountdown
メソッドでは、Canvas API を使用してカウントダウン効果を描画します。まず、Canvas オブジェクトを取得し、その幅と高さ、描画環境を設定する必要があります。
1 2 3 4 | const canvas = document.getElementById( 'countdownCanvas' );
const ctx = canvas.getContext( '2d' );
const width = canvas.width;
const height = canvas.height;
|
ログイン後にコピー
次に、フォントのサイズ、色、配置など、カウントダウンの描画スタイルを設定します。次に、ctx.fillText()
メソッドを使用して残り時間をプロットします。
1 2 3 4 | ctx.font = '30px Arial' ;
ctx.fillStyle = 'black' ;
ctx.textAlign = 'center' ;
ctx.fillText(this.remainingTime, width / 2, height / 2);
|
ログイン後にコピー
最後に、requestAnimationFrame()
メソッドを使用して、カウントダウンのリアルタイム更新効果を実現する必要があります。
1 | requestAnimationFrame(this.drawCountdown);
|
ログイン後にコピー
この時点で、カウントダウン アプリケーションの作成と描画ロジックが完了しました。
結論:
この記事の導入部を通じて、Vue と Canvas を使用してクールな時計およびカウントダウン アプリケーションを作成する方法を学びました。 Canvas の描画メソッドと Vue のデータ駆動型機能を使用することで、さまざまなアニメーション効果を簡単に実現できます。この記事が読者の実践に役立ち、フロントエンド開発における創造性と想像力を刺激することを願っています。
以上がVue と Canvas を使用してクールな時計とカウントダウン アプリケーションを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。