【cocos2d-x从c++到js】傀儡构造函数
发布日期:2021-06-30 15:56:11
浏览次数:2
分类:技术文章
本文共 2758 字,大约阅读时间需要 9 分钟。
1 2 3 4 5 6 | extern JSClass *jsb_cocos2d_Sprite_class; extern JSObject *jsb_cocos2d_Sprite_prototype; JSBool js_cocos2dx_Sprite_constructor(JSContext *cx, uint32_t argc, jsval *vp); void js_cocos2dx_Sprite_finalize(JSContext *cx, JSObject *obj); void js_register_cocos2dx_Sprite(JSContext *cx, JSObject *global); void register_all_cocos2dx(JSContext* cx, JSObject* obj); |
1 2 3 4 5 6 7 8 9 | jsb_cocos2d_Sprite_prototype = JS_InitClass( cx, global, jsb_cocos2d_Node_prototype, jsb_cocos2d_Sprite_class, dummy_constructor<cocos2d::Sprite>, 0, // no constructor properties, funcs, NULL, // no static properties st_funcs); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | template < class T> static JSBool dummy_constructor(JSContext *cx, uint32_t argc, jsval *vp) { JS::RootedValue initializing(cx); JSBool isNewValid = JS_TRUE; JSObject* global = ScriptingCore::getInstance()->getGlobalObject(); isNewValid = JS_GetProperty(cx, global, "initializing" , &initializing) && JSVAL_TO_BOOLEAN(initializing); if (isNewValid) { TypeTest<T> t; js_type_class_t *typeClass = nullptr; std::string typeName = t.s_name(); auto typeMapIter = _js_global_type_map.find(typeName); CCASSERT(typeMapIter != _js_global_type_map.end(), "Can't find the class type!" ); typeClass = typeMapIter->second; CCASSERT(typeClass, "The value is null." ); JSObject *_tmp = JS_NewObject(cx, typeClass->jsclass, typeClass->proto, typeClass->parentProto); JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(_tmp)); return JS_TRUE; } JS_ReportError(cx, "Don't use `new cc.XXX`, please use `cc.XXX.create` instead! " ); return JS_FALSE; } |
1 2 3 4 5 6 7 8 9 10 11 12 | template < typename DERIVED > class TypeTest { public : static const char * s_name() { // return id unique for DERIVED // ALWAYS VALID BUT STRING, NOT INT - BUT VALID AND CROSS-PLATFORM/CROSS-VERSION COMPATBLE // AS FAR AS YOU KEEP THE CLASS NAME return typeid ( DERIVED ).name(); } }; |
转载地址:https://kaitiren.blog.csdn.net/article/details/22164367 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月09日 13时39分50秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
教你一分钟制作自己的电子书(视频)
2019-05-01
如何用手机维护Mysql数据库
2019-05-01
完成《Java编程入门》初稿
2019-05-01
Windows Server 2012下安装Hyper-V虚拟机
2019-05-01
MacOSX和Windows 8的完美融合
2019-05-01
Iphone5S 体验(视频+截图)
2019-05-01
python 多进程之进程池的操作
2019-05-01
flask整理之 flask程序中的debug模式
2019-05-01
如何和大妈解释区块链,让他们理解区块链
2019-05-01
比特币,父母这一辈能接受吗?
2019-05-01
解释区块链钱包的意思
2019-05-01
让老百姓知道什么是比特币,只需要10分钟
2019-05-01
为什么要反对比特币,这不代表是空气币
2019-05-01
5G技术如何运用在数字资产方面
2019-05-01
区块链技术运用最广泛的还是保险
2019-05-01
我们提出了DeFi项目如何成为聚合器,有两种路径
2019-05-01
SnapEx的新感觉,对新手很友好
2019-05-01
聚合器运用在什么地方最合适
2019-05-01