Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更新';持续时间';在';一旦改变';?_Javascript_Jquery_Animation_Jquery Animate_Fabricjs - Fatal编程技术网

Javascript 更新';持续时间';在';一旦改变';?

Javascript 更新';持续时间';在';一旦改变';?,javascript,jquery,animation,jquery-animate,fabricjs,Javascript,Jquery,Animation,Jquery Animate,Fabricjs,我正在努力改进一个动画,我一直致力于在屏幕上移动东西。 当前,对象以设定的速度移动,并且没有变化 我试图包括两个最终会做同样事情的特性;更改动画对象的速度 我希望用户能够改变速度,也可以根据对象在屏幕上的位置来降低或提高速度 我不确定我是否在正确的地方寻找,因为当前我无法在动画循环开始后更新持续时间。我首先想到我可以用一个返回int的函数来替换这个数字。这是因为“速度”的值改变了,但动画循环没有更新 非常感谢您的帮助,谢谢 下面是代码片段 function moveObj () { //ini

我正在努力改进一个动画,我一直致力于在屏幕上移动东西。
当前,对象以设定的速度移动,并且没有变化

我试图包括两个最终会做同样事情的特性;更改动画对象的速度

我希望用户能够改变速度,也可以根据对象在屏幕上的位置来降低或提高速度

我不确定我是否在正确的地方寻找,因为当前我无法在动画循环开始后更新持续时间。我首先想到我可以用一个返回int的函数来替换这个数字。这是因为“速度”的值改变了,但动画循环没有更新

非常感谢您的帮助,谢谢

下面是代码片段

function moveObj () {

//initially the duration was set here.  I understand that will not work as the animation is only
//being called once.

//animation process
obj.animate('top', '+=' + canvas.height, {
    duration: speedOfObj(0),
    abort: function () {
    },//end abort callback
    onChange: function () {
        //testing only//
        speedOfObj(1000);
}

//test function to see what the results would be. speed changes when called within the on change but  the animation is not affected.
function speedOfObj(modifier){
    var speed = 10000 / (new Number(speedControl.value));
    if(modifier == 0){
        console.log("speed: "+speed);
        return speed;
    }else{
        speed *= modifier;
        console.log("speedBBBB: "+speed);
        return speed;
    }
}

一旦jQuery动画关闭并运行,它就基本上自行关闭了。如果您想更改它的工作方式,可以
。停止(true)
它,然后启动一个新的动画,从现在的位置以新的速度重新开始

也可以在动画中实现自定义步长功能,这可能需要一些队列来了解如何在动画过程中从外部影响(可能会发生变化)中工作,但我认为这将比停止原始动画并启动以新的期望速度移动的新动画复杂得多


工作演示:

啊,这确实会带来问题。使用您提到的.stop时,是否可以使其看起来无缝?纽约,我的意思是,当obj在一个特定的点,我希望它慢下来,而不是抖动,如果你知道我的意思。可能?如果您使用的是线性缓和,则除了速度会发生变化外,
.stop()
不应该是明显的。我刚刚注意到您的编辑,我认为这将是过度的,尽管没有它减慢或改变速度,我有点像撞到了墙上。不要以为你有一个示例或者一把小提琴来演示stop是如何实现的?那太棒了,谢谢!我想我理解你的意思,我只是浏览了一下查询文档中的方法,我想如果我运行动画,然后停止,更改持续时间变量,然后再次运行动画,我可以在仍然更改速度的情况下给人一种流体动画的印象。我猜物体的位置也会被保存下来,所以希望它可能是相当简单的…著名的遗言。这样一个传说!:感谢您的帮助和时间,非常感谢。提供您的小提琴!愿更多的帮助充分!!