Vueはカルーセルのフレームレート再生を実装します

Vueはカルーセルのフレームレート再生を実装します

この記事の例では、カルーセルのフレームレート再生を実現するためのVueの具体的なコードを参考までに共有しています。具体的な内容は次のとおりです。

必要

ディレクトリ名を含む配列を渡します。このディレクトリ名を通じて、ファイル ディレクトリ内のすべての画像を読み取り、ループで再生します。これにより、1 秒ごとに一定数の画像を再生する効果が得られます。最後のディレクトリが再生された後、最初のディレクトリにジャンプしてループで再生します。

コア: webpack require.contex の API を使用して、ディレクトリ内のファイル名を読み取ります。詳細を知りたい場合は、確認してください。

コード

html

<テンプレート>
 <div id="imgPlay" ref="コンテナ" :style="[スタイル]">
 <img :src="imgsrc" :style="[{height:style.height,width:style.width}]">
 <div id="but">
  <button @click="start()">開始</button>
  <button @click="stop()">停止</button>
 </div>
 </div>
</テンプレート>

ジャバスクリプト

<スクリプト>
エクスポートデフォルト{
 名前: 'ZxImgPlay',
 データ () {
 戻る {
  スタイル:[
 幅:"50px",
 高さ:"50px"
 ]、
  間隔: null, // タイマーID
  flag: true, // タイマースイッチ setIntervalNumber: 0, // 現在表示されている画像の添え字 imgsrc: "", // 表示する画像パス imgUrls: [], // すべての画像パス frameRate: 0 // フレームレート }
 },
 計算: {},
 時計: {}、
 作成された() { },
 マウントされた(){
 this.zxInit()
 },
 beforeDestroy() { },

 メソッド: {
 zxInit() {
 //This.DisplayParam は会社内の一連のものであり、混合オブジェクト //this.DisplayParam.frameRate は配列 ["ディレクトリ名 1", "ディレクトリ名 2"] です
 // this.DisplayParam.imgUrls はデッド イメージです。ディレクトリがない場合は、デッド イメージが使用されます。// this.DisplayParam.frameRate は受信フレーム レートです。this.frameRate = this.DisplayParam.frameRate && (1000 / this.DisplayParam.frameRate)
  this.imgUrls = this.DisplayParam.imgUrls
  this.DisplayParam.imageFileName != 0 ? this.readdir(this.DisplayParam.imageFileName) : this.showImages(true)
 },

 始める () {
  if (this.flag) 戻り値
  this.showImages()
  this.flag = true
 },

 停止 () {
  this.flag = false
  クリア間隔(this.interval)
 },

 画像を読み取る(画像ファイル名, _A) {
  this.stop()
  req = require.context("@/../static/images", true, /\.(?:bmp|jpg|gif|jpeg|png)$/).keys(); とします。
  パスを新しい正規表現(imageFileName[_A])とします。
  req.forEach(アイテム => {
  if (path.test(item)) {
   this.imgUrls.push({ img: "@/../static/images/" + imageFileName[_A] + item.substring(item.lastIndexOf('/')) })
  }
  })
  this.showImages()
 },
 readdir (画像ファイル名) {
  this.imgUrls = []
  (i = 0 とします; i < imageFileName.length; i++) {
  this.readImages(画像ファイル名, i)
  }
 },

 画像を表示(_B) {
  if (_B) this.imgUrls = this.imgUrlsSort(this.imgUrls, 'sort')
  コンソールログ(this.imgUrls)
  this.interval = setInterval(this.setIntervalFun、this.frameRate)
 },

 imgUrlsSort (配列、キー) {
  ary.sort((a, b) => { を返す
  x = a[キー]とします。
  y = b[キー]とします。
  ((x < y) ? -1 : (x > y) ? 1 : 0) を返します
  })
 },

 setIntervalFun() {
  this.setIntervalNumber >= this.imgUrls.length の場合 {
  this.setIntervalNumber = 0
  }
  this.imgsrc = this.imgUrls[this.setIntervalNumber++].img || ''
 }
 }
}
</スクリプト>

質問

上記で機能は達成できたが、これまでに2つの問題が見つかった。

1. require.context() API の最初のパラメータでは、変数などの変更可能な値は使用できず、警告が発行されます。
2. 上記のコードは、画像の src を常に変更することによって実装されています。つまり、src が変更されるたびに、画像を取得するための http リクエストが送信され、メモリが解放されずに増加し続けます。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • python-opencvを使用してビデオを読み取り、ビデオフレームの合計数とFPSを計算します。
  • Unity3DはOnGUIに基づいてFPSをリアルタイムで表示します
  • Unity OnGUIはゲームのFPSをリアルタイムで表示します
  • Pythonはビデオを読み取り、処理し、フレームレートfpsをリアルタイムで計算します。
  • Android で 1 秒あたりのフレーム数 (FPS) を測定する方法
  • ウェブアニメーションのフレームレートFPSを計算する方法

<<:  Python Django アプリケーションを Docker 化する方法

>>:  MAC 上の MySQL の初期パスワードを忘れた場合の対処方法

推薦する

HTTP 戻りコード一覧(中国語と英語の説明)

httpリターンコードリスト(以下は概要です)詳細な中国語の説明についてはここをクリックしてくださ...

Hadoop 3.2.0 クラスターの構築に関する一般的な考慮事項

1つのポートの変更バージョン 3.2.0 では、ネームノード ページ ポートは 9870、データノー...

WeChatミニプログラムは同時通訳を利用して音声認識を実装します

私は同時通訳音声認識機能を使用して、WeChatアプレットのホームページの音声検索機能を実現しました...

Navicat の MySQL へのリモート接続が遅い理由の詳細な説明

最終的な解決策は最後の写真にありますリモート データベース ( Linux システム) に接続したと...

docker を使用して minio と java sdk を構築するプロセスの詳細な説明

目次1minioはシンプル2 Dockerビルド minio 2.1 単一ノード2.2 マルチノード...

MySQL遅延スレーブを導入するメリットのまとめ

序文MySQL のマスター/スレーブ レプリケーション関係は、厳密には「同期」または「マスター/スレ...

HTML チュートリアル: HTML 水平線分

<br />このタグを使用すると、画面上に水平線を表示して、ページのさまざまな部分を区切...

モバイルデバイスにおける適応レイアウトの問題に関する簡単な説明 (レスポンシブ、rem/em、Js ダイナミクス)

3G の普及により、携帯電話を使ってインターネットにアクセスする人が増えています。モバイル デバイ...

Centos7でmysql6の初期化インストールパスワードをインストールする方法

1. まずデータベースサーバーを停止しますサービスmysqld停止2.vim /etc/my.cnf...

MySQL データの集約とグループ化

多くの場合、データを実際に取得せずに要約する必要があり、 MySQLこの目的のために特別な関数を提供...

JavaScript WebAPI、DOM、イベント、操作要素例の詳しい説明

目次ウェブAPI DOM DOMツリーDOM要素取得方法ドキュメントオブジェクトのプロパティイベント...

Nginxドメイン名転送のhttpsアクセスの実装

事前に一言:突然、複数のドメイン名のアクセスを https に転送するというタスクを受け取りました。...

Linux環境にJDK1.8をインストールする

目次1. インストール環境2. インストール手順ステップ1: インストールパッケージをダウンロードす...

MySQL マスタースレーブレプリケーションの原理と実践の詳細な説明

目次導入効果原理形状練習するこの記事では、例を使用して、MySQL マスター/スレーブ レプリケーシ...

Windows Server 2008 R2 リモート デスクトップのポート 3389 を変更する方法

Windows サーバー リモート デスクトップのデフォルトのポート番号は 3389 です。職場でサ...