1. 程式人生 > 程式設計 >angular使用TweenMax動畫庫的問題和解決方法

angular使用TweenMax動畫庫的問題和解決方法

最近閒來無事,搗鼓搗鼓css

發現了一個比較好動畫庫,就是TweenMax

用起來略微有點麻煩,但是效果確實可以。

首先在angular中使用TweenMax就得先通過npm 安裝

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

然後再引入

import {TweenMax} from "gsap";
www.cppcns.com

就可以在頁面中使用了。

遇到的第一個問題就是,想要動畫通過按鈕觸發來不停的播放
但是動畫播完一遍以後,怎點按鈕都不會觸發

後面找到了原因,需要在反覆觸發的時候,改變其位置才行,比如說一開始的X為500,動畫播完後X的位置就是500了,再反覆觸發,位置還是500所以不會有作用,所以想要反覆觸發,就得修改其位置

this.test = new TweenMax('程式設計客棧.box',3,{
   x:this.direction?0:500,ease:Bounce.easeOut
  })

angular使用TweenMax動畫庫的問題和解決方法

第二個問題就是,在頁面上,想要在動畫過程中和結束以後改變藍色按鈕的狀態和文字,結果發現直接用繫結在按鈕上的屬性不能夠完成這個操作

<button [disabled]="isMoveing" style="marIcFVqVSErgin-top: 10px;" nz-button nzType="primary" (click)="repeat()">
  {{describle}}
</button>

this.test = new TweenMax('.box',ease:Bounce.easeOut,onStart:function(){
    this.describle = '運動中'
    this.isMoveing = true
   },onComplete:function(){
    this.describle = '動'
    this.isMoveing = false
   }
  })

通過一番折騰發覺,其實是this指向的問題

angular使用TweenMax動畫庫的問題和解決方法

上圖可以看到,在TweenMax方法中,this指向的是Tween這個方法本身IcFVqVSEr,而我們需要改變的物件,是處在元件中的,也就是下圖所示

angular使用TweenMax動畫庫的問題和解決方法

定位到了問題所在處,那解決起來就比較簡單了,在函式作用域之外的地方定義一個元素指向正確的this就行

let _this = this
this.test = new Tweewww.cppcns.comnMax('.box',onStart:function(){
    _this.describle = '運動中'
    _this.isMoveing = true
   },onComplete:function(){
    _this.describle = '動'
    _this.isMoveing = false
   }
  })

這樣就正常了。

總結

到此這篇關於angular使用TweenMax動畫庫的文章就介紹到這了,更多相關angular使用TweenMax內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!