以前都是用的2.4版本,现刚接触3.8版本不久。求各位大佬指点一个方案。
我的某个节点,会使用tween.by的方式进行 循环的 上下 移动。
但在移动期间,我随时有可能 修改这个节点的位置。比如拖动或者瞬移等。
但是实际上 在tween期间,无法对节点的坐标信息进行修改,或者说即便修改了,也会被tween给强制拉回去。
这有什么方案可以实现不同的修改位置操作 或者 避免冲突 吗?
以前都是用的2.4版本,现刚接触3.8版本不久。求各位大佬指点一个方案。
我的某个节点,会使用tween.by的方式进行 循环的 上下 移动。
但在移动期间,我随时有可能 修改这个节点的位置。比如拖动或者瞬移等。
但是实际上 在tween期间,无法对节点的坐标信息进行修改,或者说即便修改了,也会被tween给强制拉回去。
这有什么方案可以实现不同的修改位置操作 或者 避免冲突 吗?
你是想拖动的同时,它还要上下移动对吧,给它加个父节点,拖动父节点就行
修改 之前调用一下tween的停止事件呢?
因为一些原因,只能针对单节点操作。我前面说的只是举个例子。 

问题是,我不需要它停止tween事件呀。
(举例)我就是单纯的希望这个节点在循环上下移动时,可以通过点击实现左右位移。
你是用tween改的他的position吗?
是的,因为3.x版本xy被禁用了,只能改position。
没有禁用吧,你可以试试改 node.position.x/node.position.y
我目前的实现方案是把 循环上下移动 写到update里,然后通过点击等操作进行左右位移。
但是我感觉这个方案有点不太合理。
const point = this.startBtn.position;
const anima = tween().by(1, { y: 100 }).by(1, { y: -100 });
tween(point).repeatForever(anima).start();
这样吗?试过了,不行,单纯的修改position下的x和y,并不会触发渲染,实际节点并不会移动。
但是但我通过拖拽修改这个节点时,x可以正常拖拽,y还是强制上下移动,拖拽修改的y不生效。
tween().by(1, { xx.position.y: xx.position.y+100 }) 这样试试
复用vector对象就可以了
不行,目前我测试的结果,只要对节点组件的属性进行tween操作,这个属性就被tween绑死了,外部根本无法干预。
大佬,可以细说一下吗? 
因此,如果是以
node.position作为缓动目标,需要在 onUpdate 中调用setPosition或者positionsetter 更新 node 的位置信息。
试试看?
这样只是解决了修改position的xy时可以触发实时修改坐标的问题,但是不能解决属性被tween绑死的情况。
创建一个变量x, tween对x进行0-1的变化,然后在x的set方法里面根据百分比和实时节点的坐标进行计算.
tween里有个update函数,update计算移动或拖拽时的差值
这确实是一个折中方案,和用update的方案差不多,不过比update应该要方便一点。
估计只能是使用这种通过第三方变量的方式来实现了。
我感觉还挺常用的,碰到动画过程 tween对象属性会变化的, 都适合这种第三方变量百分比来算动画过程的属性值。