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 ディスクとディスク パーティションを理解するための記事

推薦する

MySQLトランザクションとMySQLログの詳細な説明

取引特性1. アトミック性: トランザクションの開始後、すべての操作が完了するか、まったく実行されな...

vue-pdf はオンラインファイルプレビューを実現します

この記事では、参考までに、ファイルのオンラインプレビューを実現するためのvue-pdfの具体的なコー...

例によるMySql CURRENT_TIMESTAMP関数の分析

時間フィールドを作成するときデフォルトのCURRENT_TIMESTAMPデータを挿入する際、このフ...

CSSレイアウトにおけるフローティング問題に対する4つの解決策の詳細な説明

1. 原因:サブボックスをフロートに設定した後の効果: 青いボックスをフロートに設定すると、標準のド...

ミニプログラムカスタムタブバーコンポーネントのカプセル化

この記事の例では、ミニプログラムのカスタムタブバーコンポーネントをカプセル化するための具体的なコード...

JS 配列の重複を排除する 9 つの高度な方法 (実証済みで効果的)

序文一般的な方法はここには記載されていませんが、等しいかどうかを判断するための二重ループや、比較のた...

ローカルアイデアアクティベーションサーバーの構築に関する詳細なチュートリアル

序文ブロガーはアイデアIDEを使用しています。アイデア公式が最近サードパーティのアクティベーションサ...

MySQL テーブル自動増分 ID オーバーフロー障害レビュー ソリューション

問題: MySQLテーブル内の自動増分IDのオーバーフローによりビジネスブロックが発生した背景: t...

jQueryとCSSを組み合わせてトップに戻る機能を実現

CSS操作 CS $("").css(名前|プロ|[,値|関数]) 位置$(&q...

Nginx メモリプールのソースコード分析

目次メモリプールの概要1. nginxデータ構造2. nginxはOSからスペースngx_creat...

RHCEはApacheをインストールし、ブラウザでIPにアクセスします

1. at は、5 時間後にルート ディレクトリの at_test ファイルに「これは at タスク...

nginx 503 サービスが一時的に利用できない問題を解決する方法

最近、ウェブサイトを更新すると、503 Service Temporarily Unavailabl...

Docker コンテナで DockerFile を使用して複数の Tomcat サービスをデプロイする手順

1. [admin@JD ~]$ cd opt #ルートディレクトリにoptと入力2. [admin...

Linux でユーザーを完全に削除する 2 つの方法

Linux 操作実験環境: Centos7 仮想マシンまず、共通ユーザーgubeiqingを作成しま...

Linux システムで .sh ファイルを実行する方法

Linux システムで .sh ファイルを実行する方法は 2 つあります。たとえば、ルート ディレク...