请教一个关于缓动的小问题困扰我一下午也没解决

先附上代码:
image
运行代码后this.node应该往上正向移动83个单位才对呀,为什么结果总是往下移动,等于说是回调修改变量没起作用,没有应用在下一步缓动里面。
有没有哪位大哥帮我看看。

在缓动之前,加回调,意义何在?

很简单,by这句,在当前代码行就执行了。你对a赋值是没有用的。

(帖子被作者删除,如无标记将在 24 小时后自动删除)

你如果想做出这样的操作,应该在回调里做a.y = 83,而不是a = cc.v2(0, 83)

正解吧 :call_me_hand:

我试了,a.y = 83 是可以。为什么会这样啊,有点不理解。

这样是为什么方便看清楚问题,我实际应用会是一个永久循环,每次缓动之前要加一些判断,所以回调要和缓动写在一起,每次缓动前要先判断一次。

引用类型,传进去的v2已经保存了

指针不递归,你改a关我position什么事

你图上的代码中有两个v2向量, 一个y=-83,一个y=83
你的缓动函数代码将y=-83的向量传了过去
回调函数里面将a赋值成了y=83的那个
就是c语言的引用和指针的那点东西。

好吧,虽然没完全理解。但是感觉很深奥,可能要以后慢慢领悟。暂时就这样啊吧,我尝试用其他方式实现 :joy:

大哥,你说的也太抽象了。我没学过编程,自己摸索,理解起来挺难得。

这样跟你说吧,a这个变量名就是一个标记,一个名字,一把钥匙;
let a = cc.v2(0, -83)这里创建了一个v2向量,并且用了一个叫a的东西去指向它,用于获取。
后来让a=cc.v2(0,83)等于a这把钥匙不用来对应之前的向量了,对应了这个新的向量。
之前的那个向量根本没有任何变化。

你可以试下下列代码:
let a = {x:0, y:1}

let b = a;

a = {x:0, y:0}

console.log(b);

image
看到了吗,b的值是0,1
设置后面再怎么对a操作, 都对b没有关系。

哦哦,好,我去试一试。谢谢大佬的帮助,非常感谢您。。

我想到了一个很好的比喻:
明星a代言了产品1
tween买了a代言的产品
明星a改去代言了产品2
tween手里的产品还是之前买的产品1,不会因为明星a改去代言产品2而改变

永远要记住,变量名不是变量本身。

哎,大哥,我又蒙圈了。我以为这样可以,结果这样也不行。
image
这样应该不涉及引用类型的变量啊,普通变量也不对啊
哎。。。我基础太差了,包含一下

(帖子被作者删除,如无标记将在 24 小时后自动删除)

image
这里传过去的值是0,-83
后面a、b怎么变跟这个值没有关系。
你传过去的时候,人家只记得你给的值,不会记得你的变量名