问题标签 [camediatiming]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2413 浏览

iphone - 动画时设置timeOffset有什么效果?

CAMediaTiming 协议定义了一个 timeOffset 属性。现在,他们说这是一个时间偏移。这听起来很简单,但是,例如,当我将其设置为 15.0 时,动画仍然会立即开始。timeOffset 似乎没有任何效果。

也许有人可以指出一点?

0 投票
1 回答
1056 浏览

ios - 使用 CAAnimation.CurrentMediaTime() 更改显式动画的速度

我正在尝试使用 CAAnimation.CurrentMediaTime 更改显式 iOS 动画的速度(想想 CABasicAnimation 或 CAKeyFrameAnimation)。这种方法比停止动画,然后以新的持续时间重新启动要好得多。我很接近完成这一切,但我遇到了一个小问题。我有时可以开始、暂停、恢复和更改速度,但更改速度功能有问题。任何人都可以阐明情况吗?我有一些非常简单的代码和下面的示例项目。

类级变量

我的暂停功能(有效)

我的停止功能(有效)

我的更改速度功能(不起作用) 要重现问题,只需启动项目并点击更改速度按钮几次。请注意,当它从 100% 速度变为 30% 速度时,它会正确地改变速度,但是当它从 30% 速度变为 100% 速度时,对象的位置会向前跳跃,就好像速度从未改变到 ​​30% 一样。这显然是我正在保存的时间值的问题,我已经尝试过但无法让它工作。

这是使用 Xamarin Studio iOS在C# 中编写的非常简单的示例项目的链接: https ://www.dropbox.com/s/ndfo12rbemsnp1s/ChangeAnimationSpeed.zip

- - - - - 附加信息 - - - - -

我已经确定问题是我没有考虑由于速度变化而失去/获得的时间......我只是不确定如何考虑到这一点......所以我基本上需要添加另一个名为“totalTimeLostResultingFromSpeedChange”的类级别变量并跟踪它并以某种方式将其考虑在内......

0 投票
1 回答
200 浏览

ios - 无法控制 UITableViewCell 的子层的动画时间

CAMediaTiming协议定义了timeOffset应该设置动画或动画层的附加时间偏移的属性。通过设置,可以通过设置为给定值layer.speed = 0来手动控制动画时间。layer.timeOffset

而且我设法在常规视图中执行此操作,但是当我尝试执行此操作(设置图层的时间偏移)时,当该图层是 UITableViewCell 图层的后代时,它没有任何效果。

这是一个快速片段,因此您可以看到我想要实现的目标和无效的目标。

0 投票
1 回答
536 浏览

ios - 计算单元化三次贝塞尔曲线的多项式系数

我正在分析 Apple 的这段代码:

http://opensource.apple.com/source/WebCore/WebCore-955.66/platform/graphics/UnitBezier.h

我特别不明白的部分是这个部分,他们计算曲线的多项式系数(他们假设 P0 和 P1 分别是(0,0)和(1,1)):

我假设他们正在使用三次贝塞尔函数:

在此处输入图像描述

有人可以通过他们用来简化这个方程来获得这些系数的步骤吗?我假设由于 P0 是 (0,0) 可以删除第一部分,并且由于 P3 是 (1,1) 最后一部分变为 t^3,所以留下:

3 * (1-t)^2 * t * P1 + 3 * (1-t) * t^2 * P2 + t^3

他们如何简化计算多项式系数 ax、bx 和 cx?还是我离这里很远?

0 投票
0 回答
379 浏览

ios - 使用 CAMediaTimingFunction 为 UIView NSLayoutConstraint 设置动画

我目前正在动画块中为我的约束之一设置动画,但是我希望自定义动画类型 - 进一步由预设 UIVIewAnimationOptions 给出:

我研究了使用CAMediaTimingFunction的潜力,如此处所示 ( http://cubic-bezier.com/#.44,.94,.79,-0.01 ),您可以在其中传入值来更改动画风格。

那么我的问题是,如何在动画 UIView 约束时应用CAMediaTimingFunction的使用?

0 投票
1 回答
705 浏览

c - 使用三次贝塞尔函数的自定义动画

我正在尝试创建一个自定义动画,它具有与我使用的动画曲线相同的动画曲线CAMediaTimingFunction (我在 OpenGL 中制作动画,所以我无法使用它)。我也想远离UIKit一般,因为我希望它尽可能多平台。

CAMediaTimingFunction使用三次 Bezier 函数从经过的时间计算动画进度。我不知道它是怎么做到的。

据我了解,三次贝塞尔函数是参数化定义的,当您尝试从中导出笛卡尔方程时,它会变得混乱。

明确一点:我想要一种方法,它接受 x 值输入并沿三次贝塞尔曲线返回 y 值输出。控制点将被限制在 (0, 0) 到 (1, 1) 之间。

我打算做的是使用以下函数中的参数方程为贝塞尔曲线生成一个点轨迹(比如 100),每个点使用 100 个值(一次为x,一次为) ,使用 100个yt01

这是p0通过 top3是控制点的地方,并且是从tot的参数标量。我可以通过预先计算 的平方和立方值来相当容易地优化它。01t

然后我打算使用线性插值来生成一个点数组,其中的值x是线性分离的(例如x = 0.01, 0.02... 0.99),然后使用这个数组来定义我的动画进度。

这是解决这个问题的最好方法吗?对于一个相当简单的任务来说,这似乎是一个相当密集的过程,即使它都可以在发布时预先计算。

我在这个问题上看到回答者建议简单地消除和x定义函数。但是,这将给出非常不准确的结果,因为从到的线性贝塞尔曲线不会线性动画。yt0.01.0

有没有更有效的方法来解决这个问题?

有谁知道Apple是如何实现这一目标的,CAMediaTimingFunction或者那里有一个库可以实现相同的结果?

或者有没有比使用三次贝塞尔函数更简单的替代方法,它可以在动画的进出阶段提供平滑的动画曲线?

0 投票
1 回答
5176 浏览

ios - 自定义动画:缓出

我已经成功地在 a 中的绘图中创建了一个自定义动画,方法是每隔几毫秒UIView使用重复Timer来增加绘图的 alpha。

现在,我想用我的绘图实现缓动动画(减速)。我想通过在每次Timer调用时触发一个间隔更长的新计时器来做到这一点,这样 alpha 的增量就会变慢,从而导致减速。

我知道有一个 easeOut 动画CAMediaTiming,但我想知道是否有任何内置函数来获取减速数字。例如,如果我传入一个常数 10,则每次调用该函数时,我都会得到 15、18、20、21、21.5 等减速数字。

0 投票
1 回答
39 浏览

swift - 对层冻结感到困惑

我创建了图层动画组(CAAnimation 组)。

然后我将图层计时器偏移量和速度设置为0。

将动画组添加到 calayer。

然后我设置初始时间偏移

我的问题是:

  • 当我放入 group.animations 属性 2 动画(anim1 和 anim2)时,一切正常。当我通过滚动视图更改 timeOffset 值时,动画组从 anim1 起始值更改为 anim2 endValue。但是,当我放置 anim3 并通过滚动视图对 timeOffset 属性执行相同的操作时,动画组会将路径从 anim2 startValue 更改为 anim3 endValue。为什么不从 anim1 startValue???
0 投票
0 回答
38 浏览

ios - 如何使用 UISlider 在 iOS 核心动画上寻找

( CABasicAnimation(keyPath = "position.x") )使用 40 张图像创建了动画。每张图像持续时间为 3 秒。因此,在 CALayer 中,核心动画的总持续时间为 120 秒。
我正在使用 UISlider 执行搜索操作。例如,当滑块值为 5 时,我需要显示恰好在 5 秒内出现/将出现的图像并继续核心动画。如何在核心动画内部进行正向和反向寻道操作?

这是我的动画代码

0 投票
0 回答
8 浏览

ios - 有没有办法为 CAMediaTimingFunction 指定 N 个控制点?

我计划在我的CAMediaTimingFunction 中使用keyTimes功能。这里只有 2 个控制点可以影响动画曲线。我希望能够提供 keyTimes,它将像控制点一样形成曲线。有没有办法做到这一点?