【cocos2d-x从c++到js】15:傀儡构造函数
来源:互联网 发布:手机怎么升级4g网络 编辑:程序博客网 时间:2024/05/24 02:38
2014-02-11 00:26:07
标签:cocos2d-x js jsb
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://goldlion.blog.51cto.com/4127613/1357886
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();
}
};
0 0
- 【cocos2d-x从c++到js】15:傀儡构造函数
- 【cocos2d-x从c++到js】15:傀儡构造函数
- 【cocos2d-x从c++到js】傀儡构造函数
- 【cocos2d-x从c++到js】傀儡构造函数
- 【cocos2d-x从c++到js】注册函数
- 【cocos2d-x从c++到js】注册函数
- 【cocos2d-x从c++到js】14:注册函数
- 【cocos2d-x从c++到js】14:注册函数
- [cocos2d-x从c++到js]
- 【cocos2d-x从c++到js】03:hybrid开发模式
- 从 Flash 到 Cocos2d-x
- 从 Flash 到 Cocos2d-x
- 从 Flash 到 Cocos2d-x
- 从 Flash 到 Cocos2d-x
- 从 Flash 到 Cocos2d-x
- 从 Flash 到 Cocos2d-x
- 【cocos2d】从 cocos2d-x 到 quick
- 【cocos2d-x从c++到js】JS与C++的交互2——JS与C++的“函数重载”问题
- Dynamics Ax 2012 Clients Navigational Overview 客户端导览概述
- 【cocos2d-x从c++到js】14:注册函数
- JSP中的EL表达式详细介绍
- 四十四 老李来了 我在软件园的那些日子里
- 前向引用声明
- 【cocos2d-x从c++到js】15:傀儡构造函数
- 盘点蓝牙1.0-4.2技术历程
- Android开发性能优化大总结
- x=x+1、x+=1、x++、++x
- mybatis配置详解
- 递归与尾递归(C语言)
- C++版贪吃蛇
- linux sed命令详解
- 常用数据库的validationQuery语句