Creator 1.7 JSB問題提問

使用
enum class TestEnumType : uint32_t
{
Type1 = 0,
Type2 = 1,
Type3 = 2,
Type4 = 5
};
会出现
TypeError: Can't find (TypeKind.TYPEDEF) in type_map

改成
enum class TestEnumType : int
{
Type1 = 0,
Type2 = 1,
Type3 = 2,
Type4 = 5
};
就好了

这部份在旧版JSB是没有这问题的, 是否一定要使用int?

若是设定档target_namespace没有设定, 出来的JSB的档案register_all_xxx_xx
会有
// Get the global ns
se::Object* ns = ScriptEngine::getInstance()->getGlobalObject();
这段code少了se的namespace 要改成
// Get the global ns
se::Object* ns = se::ScriptEngine::getInstance()->getGlobalObject();
才是对的, 可否帮忙修正 不然每次产生都要手动去修改

若是想自定义JSB的code, 例如jsb_test_manual.cpp
我去使用jsb_test_auto.cpp已经JSB的class
extern se::Class* __jsb_test_class;

在jsb_test_manual.cpp里使用
__jsb_test_class->defineStaticFunction("create", _SE(js_test));

并不会新增到static function里
因为他在auto里面cls->install(), 请问这时后该如何新增class的static function??

Thanks

  1. 这个我后续查一下,你先用int
  2. 这个的确是漏了se,我稍后加一下,发到v1.7-release 分支
  3. install后就不能通过class的defineStaticFunction创建静态函数了。但是可以通过
se::Value ctor;
globalObj->getProperty("YourClassName", &ctor);
ctor.toObject()->defineFunction(...) 

的方式解决。

第二个问题修复了:

https://github.com/cocos-creator/cocos2d-x-lite/pull/1047

你先改成 enum class TestEnumType : unsigned int 就可以了。
目前枚举自动绑定,还不支持uint32_t 这种typedef。

感謝回復!!

@dumganhar

對不起 這麼晚回, 因為現在才有空去修改這專案!!

我發現
se::Value ctor;
globalObj->getProperty(“YourClassName”, &ctor);
ctor.toObject()->defineStaticFunction(…)

ctor.toObject() 並沒有 defineStaticFunction 這個function
只有 defineFunction

我打错了,是defineFunction, 已经更新之前回复。谢谢。

se::ScriptEngine::getInstance()->getGlobalObject()->getProperty(“gameTick”, &_tickVal); 获得值仍然是_tickVal.isUndefined()啊 部分手机 华为三星手机不是每次都必现

2.0.9和2.1.0都有这个问题

有详细的日志信息么?

没什么日志,都是我自己加的,如果这个是 tickVal.isUndefined() 有其他解决方案?

我这边是大厅是app原生开发的,然后加载子游戏,每个子游戏但是单独开发的,打apk包,拿asset资源加载的。

是我们安卓开发人员的问题,他在网络连接成功了才设置资源搜索路径,但是游戏的渲染又开始了,所以导致死掉。