1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
class JSCallbackWrapper: public cocos2d::Object public : JSCallbackWrapper(); virtual ~JSCallbackWrapper(); void setJSCallbackFunc(jsval void setJSCallbackThis(jsval void setJSExtraData(jsval const jsval& const ; const jsval& const ; const jsval& const ; protected : jsval jsval jsval }; |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
// // static JSBool { if (argc jsval std::shared_ptr<JSCallbackWrapper> new JSCallbackWrapper()); tmpCobj->setJSCallbackFunc(argv[0]); if (argc tmpCobj->setJSCallbackThis(argv[1]); } if (argc tmpCobj->setJSExtraData(argv[2]); } CallFuncN const jsval& const jsval& const jsval& bool hasExtraData JSObject* JSB_AUTOCOMPARTMENT_WITH_GLOBAL_OBJCET js_proxy_t jsval if (jsvalCallback { if (hasExtraData) { jsval valArr[0] valArr[1] JS_AddValueRoot(cx, JS_CallFunctionValue(cx, JS_RemoveValueRoot(cx, } else { jsval JS_AddValueRoot(cx, JS_CallFunctionValue(cx, JS_RemoveValueRoot(cx, } } // // // // }); js_proxy_t JS_SET_RVAL(cx, JS_SetReservedSlot(proxy->obj, if (argc JS_SetReservedSlot(proxy->obj, } // // // // return JS_TRUE; } JS_ReportError(cx, "Invalid ); return JS_FALSE; } |
1
2
3
4
5
6
7
8
9
10
|
CallFuncN const std::function< void (Node*)> { auto ret new CallFuncN(); if (ret ret->autorelease(); return ret; } CC_SAFE_DELETE(ret); return nullptr; } |
1
2
3
4
5
|
bool CallFuncN::initWithFunction( const std::function< void (Node { _functionN return true ; } |
1
2
3
4
5
6
7
8
|
void CallFuncN::execute() if (_callFuncN) (_selectorTarget->*_callFuncN)(_target); } else if (_functionN) _functionN(_target); } } |