缓动问题

cc.tween(cc.find(“Canvas/gameLayout/solve/level76/cj”))
.call(()=>{
cc.find(“Canvas/gameLayout/solve/level76/cj”).active = false;
cc.find(“Canvas/gameLayout/solve/level76/cj2”).active = true;
})
.delay(0.2)
.call(()=>{
cc.find(“Canvas/gameLayout/solve/level76/cj”).active = true;
cc.find(“Canvas/gameLayout/solve/level76/cj2”).active = false;
}).start();
为什么加上delay后面的call()就不会执行?

你直接用定时器不行吗

盲猜 tween的执行者active置为false后,tween会被取消。

1赞

咦,盲猜的很有道理

然后用.show().hide() 你会发现添加的Button的组件还能点击响应,并且不能用active判断是否显示

1赞

没用过show和hide方法 看了下 发现只是处理渲染组件的enabled值而已 所以button实际上还是有效的 只是你看不到而已 如果你想要通过这种方式来隐藏节点又希望点击不响应的话
1.自己处理button的interactable
2.自己处理button的enabled
3.在方法里面判断target的所有渲染组件是否都隐藏了
4.自己实现一个show hide方法
5.烧香拜佛 祈祷引擎组出新方法

1赞

在actionmgr里有判断action是否完成的代码。


而判断完成有可能会判断是否active为true
isDone:function () {
return ( !this._followedNode.activeInHierarchy );
},

所以如果设置了active为false,可能导致这个call的链永远结束不了。自然下一个delay就不会执行。

解决办法就是在active为false的地方添加延迟处理函数。settimeout。下一帧处理。
或者用opacity替代active。