void CCMyKeypadDelegate::keyBackClicked() { CCLOG("keyBackClicked"); ScriptingCore* sc = ScriptingCore::getInstance(); jsval res; JS_CallFunctionName(sc->getGlobalContext(), sc->getGlobalObject(), "Key_onBackClicked", 0, NULL, &res); }
void TSScriptJS::Init() { ScriptingCore* sc = ScriptingCore::getInstance(); auto GC = sc->getGlobalContext(); auto GO = sc->getGlobalObject(); JS_DefineFunction(GC, GO, "TSLog", TSScriptJS::TS_JSOut, 0, JSPROP_READONLY | JSPROP_PERMANENT); JS_DefineFunction(GC, GO, "TSSendBuffer", TSScriptJS::TS_SendBuffer, 0, JSPROP_READONLY | JSPROP_PERMANENT); JS_DefineFunction(GC, GO, "TSLocalMsg", TSScriptJS::TS_LocalMsg, 0, JSPROP_READONLY | JSPROP_PERMANENT); }
// this function will be called when the app is active again void AppDelegate::applicationWillEnterForeground() { CCDirector::sharedDirector()->startAnimation(); SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic(); SimpleAudioEngine::sharedEngine()->resumeAllEffects(); ScriptingCore* sc = ScriptingCore::getInstance(); jsval nsval; JS_GetProperty(sc->getGlobalContext(), sc->getGlobalObject(), "plugin", &nsval); if (nsval != JSVAL_VOID) { sc->executeFunctionWithOwner(nsval, "onApplicationWillEnterForeground"); } }
jsval TSScriptJS::JSCallFuncName(const char *name, int count, ...) { ScriptingCore* sc = ScriptingCore::getInstance(); int argc = count; jsval res; jsval *argv = new jsval[count]; va_list insvalist; va_start(insvalist,count); for (int i = 0; i < count; ++i) { const char* _str =va_arg(insvalist,const char *); std::string sttr=std::string("")+_str; argv[i] = std_string_to_jsval(sc->getGlobalContext(),sttr); } va_end(insvalist) ; JS_CallFunctionName(sc->getGlobalContext(), sc->getGlobalObject(), name, argc, argv, &res); delete [] argv; return res ; }
//Call Javascript function. void SendMessageToJS(const char* jsMethodName,CCObject* cobj){ ScriptingCore* sc = ScriptingCore::getInstance(); JSContext *cx = sc->getGlobalContext(); const char *methodParams = NULL; string jsonStr(""); if(cobj){ // CCLog("into have cobj"); json_t *jsonParams = NDKHelper::GetJsonFromCCObject(cobj); jsonStr = json_dumps(jsonParams, JSON_COMPACT | JSON_ENSURE_ASCII); methodParams = jsonStr.c_str(); } // CCLOG("methodParams in SendMessageToJS: %s",methodParams); if (jsJSBHelperObject == NULL) jsJSBHelperObject = JSVAL_TO_OBJECT(anonEvaluate(cx, sc->getGlobalObject(), "(function () { return JSBHelper; })()")); if (methodParams) { // CCLog("into methodParams = 2"); jsval argv[2]; argv[0] = c_string_to_jsval(cx,jsMethodName); argv[1] = c_string_to_jsval(cx,methodParams); jsval res; JS_CallFunctionName(cx, jsJSBHelperObject, "GetMessageFromCpp", 2, argv, &res); } else { // CCLog("into methodParams = 1"); jsval argv[1]; argv[0] = c_string_to_jsval(cx,jsMethodName); jsval res; JS_CallFunctionName(cx, jsJSBHelperObject, "GetMessageFromCpp", 1, argv, &res); } }
bool AppDelegate::applicationDidFinishLaunching() { // initialize director CCDirector *pDirector = CCDirector::sharedDirector(); pDirector->setOpenGLView(CCEGLView::sharedOpenGLView()); // turn on display FPS pDirector->setDisplayStats(true); // set FPS. the default value is 1.0/60 if you don't call this pDirector->setAnimationInterval(1.0 / 60); ScriptingCore* sc = ScriptingCore::getInstance(); sc->addRegisterCallback(register_all_cocos2dx); sc->addRegisterCallback(register_all_cocos2dx_extension); sc->addRegisterCallback(register_all_cocos2dx_extension_manual); sc->addRegisterCallback(register_cocos2dx_js_extensions); sc->addRegisterCallback(register_CCBuilderReader); sc->addRegisterCallback(jsb_register_chipmunk); sc->addRegisterCallback(jsb_register_system); sc->addRegisterCallback(JSB_register_opengl); sc->addRegisterCallback(MinXmlHttpRequest::_js_register); sc->addRegisterCallback(register_jsb_websocket); sc->start(); CCScriptEngineProtocol *pEngine = ScriptingCore::getInstance(); CCScriptEngineManager::sharedManager()->setScriptEngine(pEngine); CCLOG("beforecall"); //°ó¶¨º¯Êý^ JSContext* cx = sc->getGlobalContext(); JSObject* obj = sc->getGlobalObject(); JS_DefineFunction(cx,obj,"getphonenumber",getPhone,0,JSPROP_READONLY | JSPROP_PERMANENT); CCLOG("end call"); ScriptingCore::getInstance()->runScript("main.js"); return true; }
void TSScriptJS::GetWebConfig(std::string& Adapter_Ip, int& Adapter_Port) { ScriptingCore* sc = ScriptingCore::getInstance(); sc->runScript("Config/Config.js"); JSObject* pObj; jsval obj; JS_GetProperty(sc->getGlobalContext(),sc->getGlobalObject(),"IP", &obj); JS_ValueToObject(sc->getGlobalContext(),obj,&pObj); jsval AdaptServerIP; JS_GetProperty(sc->getGlobalContext(),pObj,"AdaptServerIP", &AdaptServerIP); JSString* pS = JS_ValueToString(sc->getGlobalContext(), AdaptServerIP); JSStringWrapper pW(pS); Adapter_Ip = pW.get().c_str(); TSLog("AdapteServer Ip = %s", pW.get().c_str()); jsval ip_port; JS_GetProperty(sc->getGlobalContext(),pObj,"AdaptServerPort", &ip_port); JSString* pS_port = JS_ValueToString(sc->getGlobalContext(), ip_port); JSStringWrapper pWs(pS_port); Adapter_Port = atoi(pWs.get().c_str()); TSLog("AdapteServer Port = %s",pWs.get().c_str()); }
void FacebookInterface::callbackJs(int cbIndex, const char* params) { CCLOG("111"); ScriptingCore* sc = ScriptingCore::getInstance(); JSContext *cx = sc->getGlobalContext(); if (fbObject == NULL) fbObject = JSVAL_TO_OBJECT(anonEvaluate(cx, sc->getGlobalObject(), "(function () { return FB; })()")); jsval res; if (fbObject) { CCLOG("SDFSD"); } CCLOG("222"); if (params != NULL) { jsval argv[2]; argv[0] = INT_TO_JSVAL(cbIndex); std::string tstr = params; argv[1] = std_string_to_jsval(cx,tstr); JS_AddValueRoot(cx, argv); CCLOG("333, %s", tstr.c_str()); JS_CallFunctionName(cx, fbObject, "callback", 2, argv, &res); CCLOG("call fb,"); JS_RemoveValueRoot(cx, argv); } else { CCLOG("444"); jsval argv[1]; argv[0] = INT_TO_JSVAL(cbIndex); JS_CallFunctionName(cx, fbObject, "callback", 1, argv, &res); } CCLOG("555"); }
void TestLayer::testLogic(int testIndex) { if (testIndex == 1) { if (m_bSpiderMonkeyInited) { c_addLogToCLI(3, "[C++] %s", "Spidermonkey already inited!!!"); return; } // init spidermonkey ScriptingCore* sc = ScriptingCore::getInstance(); CCScriptEngineProtocol *pEngine = ScriptingCore::getInstance(); CCScriptEngineManager::sharedManager()->setScriptEngine(pEngine); sc->addRegisterCallback(register_all_cocos2dx); sc->addRegisterCallback(register_all_cocos2dx_extension); sc->addRegisterCallback(register_cocos2dx_js_extensions); sc->addRegisterCallback(register_all_cocos2dx_extension_manual); sc->addRegisterCallback(jsb_register_system); sc->addRegisterCallback(JSB_register_opengl); sc->start(); if (!JS_DefineFunctions(sc->getGlobalContext(), sc->getGlobalObject(), myjs_global_functions)) { c_addLogToCLI(4, "[C++] JS_DefineFunctions Failed!!!"); return; } sc->runScript("GlobalFuncTest.js"); sc->runScript("SpriteFuncTest.js"); m_bSpiderMonkeyInited = true; //c_addLogToCLI(1, "[C++] %s", "Spidermonkey init success"); return; } if (!m_bSpiderMonkeyInited) { //c_addLogToCLI(4, "[C++] %s", "Init SpiderMonkey First!!!"); return; } if (testIndex == 2) { // call JS function - 0 param, 0 return ScriptingCore* sc = ScriptingCore::getInstance(); sc->executeFunctionWithOwner(OBJECT_TO_JSVAL(sc->getGlobalObject()), "MyLogFunc"); c_addLogToCLI(1, "[C++] MyLogFunc called"); } else if (testIndex == 3) { // call JS function - 1 param(Basic Type) , 1 return(Basic Type) ScriptingCore* sc = ScriptingCore::getInstance(); jsval dataVal = INT_TO_JSVAL(10); jsval ret; sc->executeFunctionWithOwner(OBJECT_TO_JSVAL(sc->getGlobalObject()), "DubleIntFunc", 1, &dataVal, &ret); c_addLogToCLI(1, "[C++] DubleIntFunc called with result: %d", JSVAL_TO_INT(ret)); } else if (testIndex == 4) { // call JS function - 0 param , 1 return(cocos2d Object) ScriptingCore* sc = ScriptingCore::getInstance(); jsval ret; sc->executeFunctionWithOwner(OBJECT_TO_JSVAL(sc->getGlobalObject()), "SpawnIconSprite", 0, NULL, &ret); c_addLogToCLI(1, "[C++] SpawnIconSprite called"); if(!JSVAL_IS_NULL(ret)) { JSObject *obj = JSVAL_TO_OBJECT(ret); js_proxy_t *proxy = jsb_get_js_proxy(obj); CCSprite *sprite = (CCSprite *)(proxy ? proxy->ptr : NULL); if (sprite) { this->addChild(sprite); c_addLogToCLI(1, "[C++] Add sprite from js to c++ layer"); } } } else if (testIndex == 5 ) { // call JS function - 1 param(cocos2d Object) , 0 return ScriptingCore* sc = ScriptingCore::getInstance(); CCSprite *sprite = CCSprite::create("Icon.png"); sprite->setPosition(ccp(CCRANDOM_0_1() * 1000, CCRANDOM_0_1() * 1000)); this->addChild(sprite); js_proxy_t *p = js_get_or_create_proxy<cocos2d::CCSprite>(sc->getGlobalContext(), sprite); jsval dataVal = OBJECT_TO_JSVAL(p->obj); sc->executeFunctionWithOwner(OBJECT_TO_JSVAL(sc->getGlobalObject()), "DoubleSpriteSize", 1, &dataVal, NULL); c_addLogToCLI(1, "[C++] Add sprite from js to layer"); } else if (testIndex == 6) { // Bind Simple UI component to c++ CCScene ScriptingCore* sc = ScriptingCore::getInstance(); sc->runScript("CircleLabelTTFTest.js"); c_addLogToCLI(1, "[C++] %s", "Run CircleLabelTTFTest script"); c_addLogToCLI(1, "[C++] %s", "Bind UI Component to CCSCene"); } else if (testIndex == 7) { // Bind Complex UI component to c++ CCScene ScriptingCore* sc = ScriptingCore::getInstance(); sc->runScript("CalendarTest.js"); c_addLogToCLI(1, "[C++] %s", "Run CalendarTest script"); c_addLogToCLI(1, "[C++] %s", "Bind UI Component to CCSCene"); } else if (testIndex == 8) { // call JS function - N param(Mix) , 0 return ScriptingCore* sc = ScriptingCore::getInstance(); js_proxy_t *p = js_get_or_create_proxy<cocos2d::CCLayer>(sc->getGlobalContext(), this); jsval layerVal = OBJECT_TO_JSVAL(p->obj); jsval nowStringVal = c_string_to_jsval(sc->getGlobalContext(), "2013-7-27"); jsval minYearVal = INT_TO_JSVAL(2010); jsval maxYearVal = INT_TO_JSVAL(2016); jsval args[4]; args[0] = layerVal; args[1] = minYearVal; args[2] = maxYearVal; args[3] = nowStringVal; sc->executeFunctionWithOwner(OBJECT_TO_JSVAL(sc->getGlobalObject()), "AddCalendarToLayer", 4, args, NULL); c_addLogToCLI(1, "[C++] %s", "Bind Calendar UI to speicfied layer"); } else if (testIndex == 9) { // call JS object function ScriptingCore* sc = ScriptingCore::getInstance(); js_proxy_t *p = js_get_or_create_proxy<cocos2d::CCLayer>(sc->getGlobalContext(), this); jsval layerVal = OBJECT_TO_JSVAL(p->obj); jsval stringVal = c_string_to_jsval(sc->getGlobalContext(), "center"); CCArray *array = CCArray::create(); array->addObject(CCInteger::create(111)); array->addObject(CCInteger::create(222)); array->addObject(CCInteger::create(333)); array->addObject(CCInteger::create(444)); array->addObject(CCInteger::create(555)); array->addObject(CCInteger::create(666)); array->addObject(CCInteger::create(777)); array->addObject(CCInteger::create(888)); jsval arrayVal = ccarray_to_jsval(sc->getGlobalContext(), array); jsval radiusVal = INT_TO_JSVAL(200); jsval args[4]; args[0] = layerVal; args[1] = stringVal; args[2] = arrayVal; args[3] = radiusVal; jsval ret; sc->executeFunctionWithOwner(OBJECT_TO_JSVAL(sc->getGlobalObject()), "AddCircleTTFSpriteToLayer", 4, args, &ret); c_addLogToCLI(1, "[C++] %s", "Bind CircleTTF UI to speicfied layer"); if(!JSVAL_IS_NULL(ret)) { sc->executeFunctionWithOwner(ret, "expandTTF", 0, NULL, NULL); c_addLogToCLI(1, "[C++] %s", "Call CircleTTF function expandTTF"); } } else if (testIndex == 10) { // Bind UI Component (CLI) ScriptingCore* sc = ScriptingCore::getInstance(); js_proxy_t *p = js_get_or_create_proxy<cocos2d::CCLayer>(sc->getGlobalContext(), this); jsval layerVal = OBJECT_TO_JSVAL(p->obj); sc->executeFunctionWithOwner(OBJECT_TO_JSVAL(sc->getGlobalObject()), "BindCLILayerTo", 1, &layerVal, &g_cliJSValue); c_addLogToCLI(1, "[C++] %s", "Bind CLI Layer to current layer"); m_bCLIBound = true; } else { c_addLogToCLI(4, "[C++] TEST NOT FOUND!!!"); } }