(Tween 综合讨论) 关于 3.8.5 Tween 系统的类型改进

同意,这个需求的优先级还要高一点,主要是用的地方比较多

111
之前用3.4.x版本时候打包iOS和安卓会报这个错
引擎组说已记录反馈,这都几年过去了CocosCreator3.8.2使用promise依旧会报
这个错 这都几年过去了? 能不能新造轮子前 花点时间先把 就轮子的破洞修复一下 再自high?

引擎组 只负责自high不负责填坑优化 一直不都是这样么? 指望他们估计得猴年马月

tween在编辑器环境下调用,希望能直接跳转到终点,这样可以保持代码一致性

强烈赞同!!

这个想法挺好,我测试了一下,这样也不破坏之前 tween() ,Tween 这种默认的没有 target 类型的使用方法了。 :+1:

看你这个回复,感觉你没认真看我这个贴想表达的是什么。

1赞

感谢反馈,这里应该是因为 tween 无法级联不同的 target 类型导致的问题。我想想有没有好的方法。

没有改接口,这贴只是加强类型,优化开发体验。

1赞

把原始帖发一下,我排查一下。感觉歪楼了啊。

这个要是改了会方便很多,希望能优化 :pray:

这个是说编辑器环境下和运行时环境行为上不一致吗?能否结合代码片段详细说明一下?

1赞

某些小丑,看帖子能不能认真看完,再回复。
这个改进影响的是严格模式下的类型检测,
不是tm改了接口的参数导致你原来的代码不能运行

1赞

我了个乖乖,都3.8.5了

这个我也苦恼中,经常漏消息。 :joy:

1赞

给tween加几个专用的属性字段怎么样?
tween(this.node).to(1,{size:cc.v2(50,100),anchor:cc.v2(0.5,0.5),position:cc.v3(0,0)}).start();
这样node和uiTransform的属性可以写一起
tween内部把size和anchor分别对应到UITransform的contentSize和anchor就行了

这样太 hack 了吧,不太赞同这种做法。

舍不得孩子套不着狼啊 :thinking:

1赞

这个建议,已经合并进 PR: https://github.com/cocos/cocos-engine/pull/16948/commits/97b8497b0ce853defffb423f174f5542e64a4e03

现在并不会破坏之前的空 target 类型 tween({}), tween() 的用法了。感谢。

我用如下代码验证了一下:

class Animal {
    public a = 0;
}

class Dog extends Animal {
    public b = 0;
}

        let animal = new Animal();
        let dog = new Dog();

        animal = dog; // OK,dog 继承于 animal,包含 animal 上的所有属性,因此可以赋值
        dog = animal; // 报错,animal 并不能赋值给 dog,animial 上缺失 dog 的属性。Property 'b' is missing in type 'Animal' but required in type 'Dog'.ts(2741)

同理,Tween 无法赋值给 Tween 的,即你上述第一个例子,会报 Type ‘Animal’ is not assignable to type ‘Dog’.ts(2322)

            let t1: Tween<Animal> = tween(animal);
            let t2: Tween<Dog> = tween(dog);
            t2 = t1; // Type 'Animal' is not assignable to type 'Dog'.ts(2322)

            t2.target(dog);