- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个已切成 120 帧的动画。每一帧都在一个 Sprite 上。 Sprite 由十行组成,每行十二个 100px x 100px 帧。为了创建动画,我按从左到右、从上到下的顺序移动 Sprite 在 div 上的背景位置。
我必须以 100 像素为步长递增以产生帧效果,所以我不能只从设置的从左到右的值(0 到 1000 像素)设置动画。
我假设我遗漏了一些关于 Greensock/TweenLite 库如何工作的简单信息,因为除了直截了当(使用 120 行代码)之外,我似乎找不到更好的方法来做到这一点:
new TweenLite('#selector', 1, {delay: 0, useFrames: true, css: {'background-position-x': '-100px'}});
new TweenLite('#selector', 1, {delay: 1, useFrames: true, css: {'background-position-x': '-200px'}});
new TweenLite('#selector', 1, {delay: 2, useFrames: true, css: {'background-position-x': '-300px'}});
new TweenLite('#selector', 1, {delay: 3, useFrames: true, css: {'background-position-x': '-400px'}});
new TweenLite('#selector', 1, {delay: 4, useFrames: true, css: {'background-position-x': '-500px'}});
new TweenLite('#selector', 1, {delay: 5, useFrames: true, css: {'background-position-x': '-600px'}});
new TweenLite('#selector', 1, {delay: 6, useFrames: true, css: {'background-position-x': '-700px'}});
new TweenLite('#selector', 1, {delay: 7, useFrames: true, css: {'background-position-x': '-800px'}});
new TweenLite('#selector', 1, {delay: 8, useFrames: true, css: {'background-position-x': '-800px'}});
new TweenLite('#selector', 1, {delay: 9, useFrames: true, css: {'background-position-x': '-900px'}});
有没有更简单的递增方式?
最佳答案
首先,您不应该使用 background-position-x,因为它没有得到广泛支持。
有几个选项:
如果您的 sprite 表仅沿一行排列,您可以像这样单独使用 TweenMax:
var frameWidth = 100, numCols = 12;
var steppedEase = new SteppedEase(numCols);
TweenMax.to('#selector', 6, {backgroundPosition: '-'+(frameWidth*numCols)+'px 0px', ease:steppedEase, repeat:-1});
如果您的 Sprite 表如您在问题中所述位于网格中,那么您将不得不引入 TimeLineMax 以像这样将所有补间连接在一起:
var frameWidth = 100, frameHeight = 100, numCols = 12, numRows = 10;
var steppedEase = new SteppedEase(numCols-1);
var tl = new TimelineMax({repeat:-1});
for(var i=0;i<numRows;i++){
tl.add( TweenMax.fromTo('#selector', 0.5, { backgroundPosition:'0 -'+(frameHeight*i)+'px'}, { backgroundPosition: '-'+(frameWidth*(numCols-1))+'px -'+(frameHeight*i)+'px', ease:steppedEase} ));
}
以下是我使用在网上找到的随机 Sprite 表创建的几个工作 fiddle ,以展示它的实际效果:http://jsfiddle.net/Boolean/sV5Ug/2/和 http://jsfiddle.net/sV5Ug/3/
一个完全不同的选择是使用 CreateJS 和 Zoe 在 Canvas 上制作动画。 Zoe 允许您从各种工具(例如 Flash IDE)将动画导出为 sprite 表和 json 文件。然后,您将使用 CreateJS 中的 BitmapAnimation 类将 spritesheet 图像和 json 转换为动画。
演示和信息在这里:
关于gsap - 如何使用 Greensock/TweenLite 增加背景位置动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19416124/
尝试在 Gatsby 站点中创建动画时,出现以下错误: 12:57:12:665 (ScrollMagic.Scene) -> ERROR calling setTween() due to miss
我有个问题想问你,希望你能帮助我。我正在使用 为自己构建视差效果GSAP, -ScrollTrigger v3.5.1 并为自己构建了一个名为 parallax() 的函数。 我想在具有不同设置的区域
因此,我在 Three.js 中获取对象的 Y 位置(高度),然后用它更新 greensock 时间变量。它正在登录控制台,但不更新 greensock 中的变量。我究竟做错了什么?当我向时间变量添加
我正在尝试使用 gsap 制作时钟动画。问题是我的实际脚本并不精确。我需要的是: 按下按钮 开始动画(整小时旋转) 然后再次按下按钮停止等待 2 秒并继续这样做 只需开始 -> 旋转 -> 停止(2
所以我目前正在花一些空闲时间学习和探索 GSAP(Greensock 动画平台)。我想知道是否可以为一个特定的重复元素提供一组值。这就是我的 Tween 的样子; TweenMax.from(blin
首先,我是 GSAP 新手,所以请耐心等待。我尽力描述我所面临的困难。 为了制作 SVG 文件的动画,我开始深入研究 GSAP。我为 SVG 文件中的不同元素创建了多个补间。一切工作正常,并且动画效果
我有这段代码可以为不透明度为 1 到 0 的对象设置动画。 但我想知道如何才能让这个 Action 无限重复,每 1 秒? 有什么想法吗? var tl = new TimelineMax();
我正在尝试使用 GSAP 进行我的第一个补间,但没有任何反应,即使我尝试使用示例代码也是如此。 我有一个包含以下代码的 php 文件: #green { width: 100px;
我有以下 3 个 HTML 元素: Item 1 Item 2 Item 3 以及以下 JavaScript: var timeline = new TimelineMax({paused:true,
我开始学习和使用 GreenSock Animation Platform (GSAP) 我创建了一个使用 3D 变换来旋转元素的“旋转票”示例,但是我在背面可见性方面遇到了问题。 看看我的 demo
GSAP 声称使用 HTML5 来执行出色的网络动画,但在他们关于 Greensock.com 的文章中明确表示它不使用 html5 中的 Canvas 框架。很明显,他们正在使用提供的 script
我正在使用 ssr 渲染在 nuxt.js 中编写应用程序。我有 gsap 的问题。我正在使用 typescript ,当我尝试使用 timeline.staggerTo() 方法时,我收到错误,即
我试图理解这篇文章: https://codepen.io/GreenSock/pen/RwVgEgZ 对我来说最难的是理解 select属性(property)。 AFAIK,这是 的属性HTML
如果我在 html 文件中编写脚本代码,动画就会起作用。但如果动画代码在js文件中,那就不行了。这是我的动画代码 $(document).ready(function(){ $(window)
我想做的是这样的:我想在页面的Y或X轴(底部和左侧边框)上生成框并让它们移动彼此平行,直到它们离开屏幕,我想将它们删除。这是我到目前为止所做的: Codepen 。 function generat
Holla,当我关闭菜单并再次打开它时,我需要重置动画。我怎样才能做到这一点?动画仅在我第一次打开菜单时起作用。 CSSPlugin.defaultTransformPerspective = 600
我有描述环境的大 svg 图片,并尝试创建循环,从左到右移动图片: html: CSS: .animation-wrapper{ top: -0; left: -10000px;
大家好.. 我想知道是否可以在GSAP中使用循环,或者它可能对这种情况有一些特殊的东西。 在我的情况下,我有 ul 元素和 30 li 项。 我想给他们增加单独的动画。 例如这样 TweenMax.t
我在 React 应用程序中使用 GSAP,在路线之间快速来回切换时遇到了大量空目标错误。 问题是我的动画比在 Macbook 上向左/向右滑动来后退/前进所需的时间更长,因此,当下一页加载时,旧动画
动画在播放时有效,但在使用reverse()函数时无效 这是演示 https://codesandbox.io/s/gatsby-express-9uqi7导航栏组件 const [state, se
我是一名优秀的程序员,十分优秀!