Cocos Creator 3.8.5 社区版公测贴 【已发布】

好的 谢谢

数值默认步长能设置成0么,每一次点击手抖一下就数值就会变化,好烦啊

文档中的方法第一个传的方法名,但是在下面实例中第一个传的是布尔值,麻烦修正下谁对谁错

图片

这玩意我试过,不好用,好像是有线程问题,多调用几次就崩了

function emit(eventEnum: string): any {
    return function (target: any, propertyKey: any, descriptor: PropertyDescriptor): PropertyDescriptor {
        const getter = function () {
            console.log("getter: " + propertyKey);
            return this["_" + propertyKey]
        };
        const setter = function (newValue: any) {
            this["_" + propertyKey] = newValue
            console.log("setter: " + propertyKey + " = " + newValue);
            EventManage.emit(eventEnum)
        };
        // Object.defineProperty(target, propertyKey, {
        //     get: getter,
        //     set: setter,
        //     enumerable: true,
        //     configurable: true,
        // });

        if ('initializer' in descriptor) {
            target["_" + propertyKey] = (descriptor as any).initializer();
        }

        delete (descriptor as any).initializer;
        delete descriptor.writable;//

        return Object.assign(descriptor, { get: getter, set: setter });
    }
}

这样试试。

但这有个问题:就是 initializer 初始化后的值被作用在原型上,而不是对象的属性上。
目前受限于 babel 的实现。具体可以看这个帖子的讨论:

1赞

感谢反馈,有同学在跟进中。有进展会同步。

辛苦~
今晚又尝试了下,在项目的ts脚本中通过给全局对象添加属性的方式
globalThis[“abc”] = {a:1, b:2, c:3}

在插件的scene.ts中是可以正常取到数据的

再同步一下信息

我单独写了一个项目中的脚本,用于获取我注册过的信息

在插件中通过下图中的这种方式能正常取到我想要的数据

这个是取到的信息

只是这种方式会在项目中多一个脚本文件,并不能集成到npm包中

感谢大佬,新年快乐啊,这样可以了,是因为在3.x引擎修改了装饰器的编译方式吗,2.x对于装饰器的编译是tsc可以用Object.defineProperty修改而不用返回值,3.x使用babel必须返回一个PropertyDescriptor或者其他预期的值,才能处理属性的行为,我理解是这样的

好的,我确认下

多调用几次会奔溃,你是怎么调用的?方便提供demo看看么?

嗯,2.x 是用 tsc,3.x 改用 babel 后导致的差异。

1赞

项目中已经不再用这种方式了
现在换成了



这种方式来处理

我的creator版本是2.4.14
导出鸿蒙项目用的是 jsvm

具体实现是看的这两个文档,你可以按照这个文档写几个方法试试

  1. 如何在 HarmonyOS 平台上使用 ArkTs 直接调用 JavaScript 方法
    templates/openharmony/native/engine/doc/如何在 HarmonyOS 平台上使用 ArkTs 直接调用 JavaScript 方法.md · lestelhw/engine-native_1 - Gitee.com

  2. 如何在 HarmonyOS 平台上使用 JavaScript 直接调用 ArkTs 方法
    templates/openharmony/native/engine/doc/如何在 HarmonyOS 平台上使用 JavaScript 直接调用 ArkTs 方法.md · lestelhw/engine-native_1 - Gitee.com

我记得第一个没有合进去,应该是用不了的。你是在arkts调用javascript方法?

当时是有互相调用的

当时做鸿蒙的时候,2.4.14版本还没有发,是加了一个群,然后有人发给我的2.4.14的creator

好的,后续加入了arkts调用js的方法的时候,我在多测试下。

:+1: 辛苦~

大佬,帮忙跟进下 这个吧, 感谢!!