Cocos Creator 3.6.3 社区版公测

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

1赞

我也是3.5.2过来后出现这个问题,我是因为用了一个扩展叫ccc-devtools
会导致报错Error: UI element #error .error-stack doesn’t exist.
所以这个扩展不能继续使用了,卸载后正常了

Function 需要配合 target 才知道是要取消哪个 target 的 Function。当然了,如果没有 target,那就是普通的函数了。

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

Laya里管这个东西有个类叫handle

这个解决了吗 :cold_sweat:

我写了如下代码测试

class Test {
    test(): void {
        console.log("it is a test");
    }
}

let t1 = new Test;
let t2 = new Test;

if (t1.test === t2.test) {
    console.log("the same function");
}
else {
    console.log("different");
}

判断结果是相等。那引擎如果这样存储 callback 的话,就会出问题了。

吃瓜群众问下为啥不使用索引的方式,给绑定的回调方法,返回一个独一无二的INDEX。
取消的时候,提供这个INDEX即可。
例如,我的代码片段:
/**
*
* @param {string} type
* @param {function} func
* @param {Context} [context=null]
* @return {number}
*/
InteractiveSpriteProto.bindEvent = function (type, func, context) {
var _self = this;
var callbacks = _self._events[type];
if (callbacks == null) {
callbacks = _self._events[type] = {};
}
callbacks[_self._eventIndex++] = {func: func, context: context};

    return _self._eventIndex;

};

一个复杂点的界面10个绑定
那得写10个成员来记录返回的index

没遇到过这样的问题,一个界面,同一个对象上同一个事件有多个个同样的侦听。
如果是一个类的多个实例,类的内部自己处理了,也不会手动有十个需要自己解除。
如果要删除同类型的 在解绑事件时,不提供eventId即可
例如:
InteractiveSpriteProto.unbindEvent=function(type,eventId){

}

返回 index 是可以解决唯一性问题,实现可能还更简洁。主要在于使用者需要保存这个 index,比较不方便。这种没有对错,也没法满足所有的需求。还有一个就是参考了 web 标准的接口。

target 是可选参数,off 需要具备在没有 target 的情况下识别不同 callback 的能力。如果依靠 target 的话就会出现 on 不同的事件就要传入不同 target 的情况,这对一些匿名函数、全局函数就不太友好了。既然要求通过 callback 来识别,那么就应该保持行为一致性了。否则当传了 target 就 off 这个 target 的全部 callback(此时无视传入的 callback),不传 target 就 off callback,就太坑了。
因此,我们单独提供了一个 targetOff,用来避免这种歧义。有根据 target 的需求就调用 targetOff 就好了。

1赞

好的,感谢解惑

这个报错没事,这是因为把这个注释或删掉了,实际啥也不影响

spine和SkeletalAnimation的接口能不能设计的更好用一点

用了cocos4年,我第一次见到不会用节点事件的,你说的不在少数我只觉得除了新手外,可能你的确是那个少数,至少我呆过的三四家公司,共事过的几十个开发,都没有遇到无法正确理解节点事件的

那我没法了。我确实以为是off的回调函数,我从来也没去认真看过每个api文档,
其实这个也挺好理解的,我上面也举过例子了,比如我前面肯定是看过on的api每个参数,知道了callback的含义,然后我现在去翻cocos文档看到有个用法是off注销事件,接着我也看到有个参数是callback,此时,我相信大部分人都不会再看去这个off的callback参数到底是什么的callback,所以我用了几年也无法知道这个callback还能跟on的callback相关联而起名的,
举个例子,room.destroy(callback:func),我相信有点经验的老司机都不会去翻看api文档来确定这个callback到底是房间的销毁回调呢还是其他回调呢?这样推理过来的话,很容易理解我的糊涂了。
也可能是我并非真的前端,半桶水罢了,我是没曾想还能这么起名的。。。以后还是多看api文档,单看指南手册还不行,得逐个api去看,那确实真的挺麻烦的,其实可以做个统计这样就能确定是否有其他人跟我有一样的困惑,当然不排除我是个例。如果能不看参数介绍就能从参数的名称知了函数的用法应该是最稳妥的。当然万事难求全。
我是有个习惯,如果参数名我看不懂我才会去看参数的具体介绍,像这样callback的参数名,应该业内大部分人都知道是什么意思,所以我就草率了

还有你没统计过,所以在你身边人即使遇到过也不一定会告诉你哦。。。(本言论不违反社区规定,被恶意屏蔽,管理请查清楚)

纠结这些,还不如把bug修改完,不比啥都强么

你的帖子已经被社区标记并被临时隐藏。