【cocos2d-x从c++到js】傀儡构造函数
发布日期:2021-06-30 15:56:11
浏览次数:3
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年05月03日 13时50分13秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
requestAnimationFrame详解以及无线页面优化
2021-07-04
你的「在看」有人看,清华研究者发现「看一看」的这些规律
2021-07-04
Centos6.x使用安装phantomjs,问题总结
2021-07-04
python2.6.x/python3发送邮件,并在正文中显示附件中的图片
2021-07-04
Dubbo服务治理向SpringCloud服务治理兼容,过渡
2021-07-04
JAVA使用HBase的Rowkey精确批量处理
2021-07-04
Collections排序sort排序list,单个及多条件排序
2021-07-04
Mysql中where 条件中加 if 判断-纯jdbc
2021-07-04
分布式数据中间件TDDL、Amoeba、Cobar、MyCAT架构比较
2021-07-04
Sharding-JDBC的SQL引擎(Druid)处理的支持情况总结
2021-07-04
MySQL性能优化:分区
2021-07-04
MySQL优化~分区表的管理
2021-07-04
一份MySQL性能管理及架构设计指南待领取
2021-07-04
springboot与pinpoint搭建监控的过程及效果
2021-07-04
Pinpoint 安装部署
2021-07-04
springmvc框架redisTemplate的使用
2021-07-04