jQuery 沿正弦波制作动画

2023-11-29

我为此花了几天时间,然后放弃了。

我试图让一个对象沿着正弦波无限地产生动画。它不应该在第一个周期之后结束。

主要问题:循环在大约 1 1/3 Pi 而不仅仅是 Pi 处结束。这个额外的动作破坏了动画。

我被困在这里:http://jsfiddle.net/WPnQG/12/。在每个周期之后,它会跳过大约 40 个像素,然后继续沿其路径移动。这是我无法解决的问题——它结束的值和继续重新启动的值不相等,因此该对象似乎会跳过。有人可以帮助一个男人吗?谢谢

我正在使用jQuery 路径插件执行动画的路径——有问题的正弦波。

enter image description here


Source:

function float(dir){
    var x_current = $("div").offset().left;
    var y_current = $("div").offset().top;
    var SineWave = function() {
        this.css = function(p) {
            var s = Math.sin(Math.abs(p-1)*10);
            if (!dir){// flip the sin wave to continue traversing
               s = -s;
            }
            var x =  300 -p * 300;
            var y = s * 100 + 150;
            //var o = ((s+2)/4+0.1); //opacity change
            last_x = x;
            // add the current x-position to continue the path, rather than restarting
            return {top: y + "px", left: x_current + x + "px"};
        } 
    };

    $("div").stop().animate({
        path: new SineWave
    }, 5000, 'linear', function(){
        // avoid exceeding stack
        setTimeout(function(){float(!dir)}, 0);
    });

}

我必须承认我对这是如何编写的有点困惑,但我确实明白你是从维基上得到的。让我感到奇怪的是,正弦波在重新开始之前就超过了 2 pi。通常,完整循环的正弦波范围为 0 到 2pi。考虑到这一点,我更新了一些 JavaScript,现在问题已经消失了。

function float(dir){
var x_current = $("div").offset().left;
var y_current = $("div").offset().top;
var SineWave = function() {
    this.css = function(p) {
        var pi2 = (3.1415927 * 2);
        var a = p * pi2;
        var s = Math.sin((pi2 - a)*2);
        var x =  300 * (1 - p);
        var y = s * 100 + 150;
        //var o = ((s+2)/4+0.1); //opacity change
        last_x = x;
        // add the current x-position to continue the path, rather than restarting
        return {top: y + "px", left: x_current + x + "px"};
    }
};

$("div").stop().animate({
    path: new SineWave
}, 5000, 'linear', function(){
    // avoid exceeding stack
    setTimeout(function(){float(!dir)}, 0);
});

}

float(true);

注意:您可以通过更改 s 中的常数来告诉它要完成多少个正弦波(1 是一个完整的正弦波,2 是两个完整的正弦波等)此外,不再需要“反转”波。

JSFiddle 链接:http://jsfiddle.net/P5vqG/8/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jQuery 沿正弦波制作动画 的相关文章

随机推荐

  • 如何从不受支持的国家/地区销售付费应用程序[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我想出售我开发的应用程序 但我的国家 罗马尼亚 不支持此服务 因此 我想请一位住在可以销售付费应用程序的国家 法国或美国 的朋友帮助我 现在我不知道该怎么告诉他这个过程 他身边需要什
  • 捕获地理位置错误 - 异步等待

    如何捕获特定于地理位置的错误以通知用户他们必须打开地理定位 catch 记录了一个名为位置误差正如 Mozilla 文档中所引用的 https developer mozilla org en US docs Web API Positio
  • 在 Android M 上请求麦克风权限

    我需要在 Android M 中使用麦克风 我尝试在清单中设置权限组 但无法使其正常工作 这是我在清单中得到的内容
  • 将 iPhone 应用程序与 Shibboleth 集成

    有人将 iPhone 应用程序与 Shibboleth 身份提供商集成吗 谷歌搜索没有得到任何结果 所以我直接询问大师 如果以前没有这样做过 这样做是否可行 两者的答案都是 是 我是一名 Java 人员 所以两周前被问到 学习 Object
  • 温莎城堡如何响应实现多个接口的类?

    例如 我有两个接口 ICustomerService 和 IOrderService 每个接口都有几个函数 例如 GetCustomer GetOrder 等 我想要一个类来实现这两个接口 Server 温莎城堡对此有何回应 首先有可能吗
  • 合并 XmlNodelist

    任何人都可以给我一个将 xmlNodelists 合并到单个列表的解决方案吗 我会使用 LINQ Concat方法 问题是XmlNodeList is IEnumerable相对于IEnumerable lt XmlNode gt 因此你必
  • 解释GDB寄存器(SSE寄存器)

    我已经使用 GDB 1 天了 我对它有了一定的了解 但是 当我使用 GDB 和打印寄存器在最后一个分号处设置断点时 我无法完全解释存储到 XMM 寄存器中的数据的含义 我不知道数据是否采用 MSB gt LSB 格式 反之亦然 m128i
  • R 中向量的子向量之和

    给定一个向量x长度为 k 我想获得一个 k x k 矩阵X where X i j 是x i x j 我现在的做法是 set seed 1 x lt rnorm 10 X lt matrix 0 10 10 for i in 1 10 fo
  • 程序集版本是否可以随每个 TFS 2010 版本自动更新?

    我正在使用 Visual Studio 2010 和 TFS 2010 有没有办法让 dll 版本随着每个 TFS 版本自动递增 Thanks 我有一篇关于如何在 TFS Build 2010 中对程序集进行版本控制的博客文章 如何为 TF
  • 递归与yield返回树中的元素顺序

    我有一个递归函数 在给定起始根节点的情况下返回所有子树节点 private IEnumerable
  • Google App Engine 中可以进行长轮询吗?

    我需要制作需要经常轮询服务器的应用程序 但GAE对请求有限制 因此发出大量请求可能会非常昂贵 是否可以使用长轮询并使请求等待最多 30 秒的更改 Google AppEngine 有一个新功能 Channel API 您可以使用它 A构建良
  • 有人成功调试 iPhone 的单元测试吗?

    我找到了例子如何在 Cocoa 中调试单元测试 or the ADC 页面在这里 但我无法让调试适用于 iPhone 应用程序目标 我可以启动并运行测试 并且它们在构建期间运行 但我需要的是debug一些更复杂的故障的测试 您可能会考虑将测
  • 如何将数据注入到从路由器创建的 Angular2 组件中?

    我目前正在尝试为我们的 Angular1 应用程序 相当复杂的一个 构建 Angular2 原型 基于 alpha44 并且我正在尝试在使用路由和子路由时找到最佳的模型 数据架构 在我的示例中 从从路由创建的子组件中 我想访问父组件的属性
  • 管理许多 git 存储库

    在 git 中设置项目很容易 因此即使对于小脚本 我也可以拥有单独的存储库 现在的问题是如何管理它们 我在多个地方使用这些存储库工作 当我对某些存储库进行更改后 我希望能够更新其他位置的存储库 所以我有一个目录 里面有很多存储库 我怎样才能
  • 如何通过TabBars调用Activity

    我正在制作一个使用选项卡栏的应用程序 现在我需要知道的是 如何通过打开其他选项卡setOnTabChangedListener 在我的代码中 例如 我当前位于选项卡中 当我单击第二个选项卡时 它应该调用第二个选项卡的活动 看下面的代码 Ta
  • 从安全性中删除时间戳元素

    所有的极客都会说 WSE 已经过时了 现在对我来说没关系 只是想找到解决我问题的方法 尝试使用 WSE 使用 Java Web 服务 在传出的soap请求中有一个安全有附加时间戳的节点 我的待发肥皂请求如下所示
  • 动态使用时,波形符不会转换为绝对路径

    我想动态创建 3 张卡片 每张卡都有一个图像 我想为每张卡动态设置路径 但我不能使用波形符 因为波浪号不会转换为绝对路径 img 我收到此错误 GET http localhost 3000 assets images how to use
  • 按给定索引对多维数组进行排序 - PHP?

    我有两个数组 days order and mysql result 我要排序 mysql result数组使用 days order大批 我想以天数升序显示 MySQL 结果 有什么办法可以做到这一点或任何其他方式 以便我可以通过 day
  • 让 phantomjs、socket.io 和 gevent-socketio 协同工作

    我正在尝试构建一个利用 Phantomjs 1 7 模拟浏览器 的应用程序 并创建一个 Python 后端来启动一些事件并收集数据 问题是 Phantomjs 和我的 Python 程序这两个进程需要双向通信 问题是里面page evalu
  • jQuery 沿正弦波制作动画

    我为此花了几天时间 然后放弃了 我试图让一个对象沿着正弦波无限地产生动画 它不应该在第一个周期之后结束 主要问题 循环在大约 1 1 3 Pi 而不仅仅是 Pi 处结束 这个额外的动作破坏了动画 我被困在这里 http jsfiddle n