在 Angular2 项目中使用 TweenMax

Posted

技术标签:

【中文标题】在 Angular2 项目中使用 TweenMax【英文标题】:Using TweenMax in Angular2 project 【发布时间】:2016-09-05 06:37:47 【问题描述】:

如何在我的 Angular2 项目中设置 TweenMax。我希望能够导入类似于以下内容的 TweenMax,而不是在我的 html 中添加脚本:

import  TweenMax  from 'gsap';

注意:我正在使用 angular-cli。

【问题讨论】:

【参考方案1】:

this 外部包添加到 Angular 2 几乎与任何其他包相同。 jquery,firebase,你的名字..

但是你应该知道,此时没有 gsap 模块的类型文件。所以你不能随心所欲地挑选进口。这也意味着 typescript 中没有智能感知 :( 但你仍然可以像这样使用它:

第 1 步: npm 安装它

npm install gsap --save

第 2 步: 通过在typings.d.ts 文件中添加以下行来防止打字稿抱怨找不到分类:

declare var module:  id: string ;

declare let TimelineMax: any; // declare it as any.
 // so no error complains, Typescript compiler is happy now:)

为该模块创建类型文件后,第 4 步变为:

typings install gsap --save. After that make sure you have included: /// <reference path="../typings/path to your gsap typings" />

第 3 步:在您的组件中使用它 - 例如在app.component.ts

import 'gsap' // this is required for TimelineMax() to work
// decorator stuff here.
export class AppComponent implements OnInit

  ngOnInit()

    let targetObject = document.getElementByTagName('h1');

    let tl = TimelineMax(); // this is free of errors now

    tl.from(targetObject, 1,  x:400 );
    tl.play();
  

第 4 步:在此设置中,无需向 main.ts(引导文件)添加任何内容,尽情享受吧!

【讨论】:

嘿,由于 angular-cli 文件已更改,您可以更新答案吗?例如, step2 和 step3 不再存在。 PS - 我一直在为我的错误寻找解决方案并遇到了这个问题。 github.com/greensock/GreenSock-JS/issues/228 @Saiyaff Farouk 谢谢你告诉我 :) 你能确认一下现在没问题吗?我不再使用角度了。我现在几乎所有事情都使用elm。我对角度有点生疏了:) 你能帮我用 Angular 1 做什么吗?【参考方案2】:

有一个更简单的方法 只是

npm install --save-dev gsap
npm install --save-dev @types/gsap

在你的 ts 文件中,导入 gsap

import TweenLite from "gsap";

在你的方法或 ngOnInit 上你可以写

let photo = document.getElementById("photo");
TweenLite.to(photo, 2, width:"200px", height:"550px");

如果你有一个带有照片 ID 的 div

【讨论】:

当我这样做时,TweenLite 是未定义的,知道吗? 为我工作。谢谢。 @types/gsap 工作完美,所有方法都得到认可,谢谢! (角度 5.2.9)【参考方案3】:

除了为gsap添加类型定义,试试:

在 Angular Zone 外运行 用this 分配一个实例

像这样:

import  NgZone  from '@angular/core';
import TweenMax from "gsap";

myTween: any;

constructor( private ngZone: NgZone )

ngOnInit() 

    this.ngZone.runOutsideAngular(() => 
      
        this.tween = TweenMax;
        this.tween.to( some params ); // do your stuff
      
    );

注意:在 Angular 5.2.4 / Cli:1.6.8 / typescript:2.53 上测试

【讨论】:

以上是关于在 Angular2 项目中使用 TweenMax的主要内容,如果未能解决你的问题,请参考以下文章

ie8中的Tweenmax不透明度

TweenMax动画库学习

tweenMax学习笔记

使用TweenMax的简单Tween动画

TweenMax动画库学习

TweenMax动画库学习