AngularでTweenMaxアニメーションライブラリを使用する際の問題と解決策

AngularでTweenMaxアニメーションライブラリを使用する際の問題と解決策

最近何もすることがないのでCSSをいじっています

より良いアニメーションライブラリTweenMaxを見つけました

使い方が少し面倒ですが、本当に効果があります。

まず、AngularでTweenMaxを使用するには、まずnpm経由でインストールする必要があります。

1. npm install --save-dev gsap
2. npm install --save-dev @types/gsap

次に紹介する

"gsap" から {TweenMax} をインポートします。

ページ内で使用できます。

最初に遭遇した問題は、ボタンをトリガーしてアニメーションを連続的に再生したかったのですが、アニメーションが一度再生された後は、ボタンをクリックしてもトリガーされないということでした。

後で理由が分かりました。繰り返しトリガーする場合は、位置を変更する必要があります。たとえば、最初に X が 500 の場合、アニメーションが再生された後、X の位置は 500 になります。繰り返しトリガーすると、位置は 500 のままなので、機能しません。したがって、繰り返しトリガーする場合は、位置を変更する必要があります。

this.test = new TweenMax('.box',3,{
   x:this.direction?0:500,
   イーズ:バウンス.イーズアウト
  })

2 番目の問題は、ページ上で、アニメーション中およびアニメーション後に青いボタンの状態とテキストを変更したいのですが、ボタンにバインドされたプロパティを使用してこれを直接行うことができないことです。

<button [disabled]="isMoveing" style="margin-top: 10px;" nz-button nzType="primary" (click)="repeat()">
  {{記述可能}}
</ボタン>

this.test = new TweenMax('.box',3,{
   x:this.direction?0:500,
   イーズ:バウンス.イーズアウト、
   onStart:関数(){
    this.describle = '動いている'
    this.isMoveing = true です
   },
   onComplete:関数(){
    this.describle = '移動'
    this.isMoveing = false
   }
  })

しばらく悩んだ後、これが実際に問題であることがわかりました

上の図からわかるように、TweenMaxメソッドでは、これはTweenメソッド自体を指しており、変更する必要があるオブジェクトはコンポーネント内にあります(下の図を参照)。

問題が特定されれば、解決は比較的簡単です。関数スコープの外側に要素を定義して、正しい this を指すようにするだけです。

_this = this とします
this.test = new TweenMax('.box',3,{
   x:this.direction?0:500,
   イーズ:バウンス.イーズアウト、
   onStart:関数(){
    _this.describle = '動いている'
    _this.isMoveing = true
   },
   onComplete:関数(){
    _this.describle = '移動'
    _this.isMoveing = false
   }
  })

それは普通のことだ。

要約する

これで、Angular で TweenMax アニメーション ライブラリを使用する方法に関するこの記事は終了です。Angular で TweenMax を使用する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。

<<:  MySQL 5.6.36 Windows x64 バージョンのインストールチュートリアルの詳細

>>:  Linux ディスクとディスク パーティションを理解するための記事

推薦する

WeChatミニプログラム開発のためのコンポーネント設計仕様

WeChat ミニプログラム コンポーネント設計仕様コンポーネントベースの開発という考え方は、私の開...

Tomcatのクラスロードメカニズムのプロセスとソースコード分析

目次序文1. Tomcat クラスローダー構造図: 2. Tomcat のクラスロードプロセスの説明...

JSON.stringify のさまざまな用途のまとめ

序文json を使用したことがある人なら、オブジェクトを文字列化してからバックエンドに送信するのが一...

Dockerはmacvlanをベースにホスト間コンテナ通信を実装する

2 台のテスト マシンを見つけます。 [root@docker1 centos_zabbix]# d...

JavaScript カスタム カレンダー効果

この記事では、JavaScriptカスタムカレンダーエフェクトの具体的なコードを参考までに紹介します...

JavaScript スクリプトが実行されるタイミングの詳細な説明

JavaScript スクリプトは HTML 内のどこにでも埋め込むことができますが、いつ呼び出され...

startup.bat をダブルクリックすると Tomcat がクラッシュする問題の解決方法の詳細な説明

Tomcat を学習したばかりのプログラマーにとって、これはよくある間違いです。 1. 環境変数の問...

mysql maxとwhere間の実行問題の概要

mysql maxとwhereの間の実行の問題SQLを実行します: テーブル「grades」を作成し...

Linux システムの busybox に mkfs.vfat コマンドを移植する

オーディオおよびビデオ ファイルを保存するためのディスク寿命を延ばすには、ディスクをフォーマットする...

Mysqlトランザクション操作の失敗を解決する方法

Mysqlトランザクション操作の失敗を解決する方法トランザクションの原子性: トランザクションは、デ...

ウェブページの右下隅に「いいね!」カード効果を実現するための CSS (サンプルコード)

効果 HTML を実装するには、まずクリーンな HTML ページを準備し、ノードを記述します。 &l...

シンプルなログインページを実装するための HTML+jQuery

目次導入公開コード(バックエンドインターフェース)例 1: 最もシンプル (純粋な HTML)コード...

jQuery キャンバスで画像検証コード例を描画する

この記事では、jQuery Canvasの描画画像検証コードの具体的なコードを例として紹介します。具...

航空機戦争ゲームを実装するためのJavaScript

この記事では、キャンバスとjsを使用して簡単な飛行機戦争を実装する方法を参考までに紹介します。具体的...

MySQL のクラスター化インデックスとクラスター化インデックスの成長の仕組みを理解する

このノートでは、 MySQL の B+Tree インデックスとは何ですか?クラスター化インデックスは...