2013-03-21 4 views
-2

В моем проекте cocos2d-x js я связываю функции C++ с js с помощью cxx-генератора, таким образом я создаю ios alertView и показываю его форму моего js-кода, но когда пользователь нажимает кнопку «ОК», я могу передать событие в js сейчас, я пробовал и искал все 2 дня, но я не могу этого сделать, если кто-то знает, что это за решение, пожалуйста, помогите мне, очень спасибо!как вызвать функцию javascript из C++ в cocos2d-x

+0

Вы должны ДЕЙСТВИТЕЛЬНО добавить больше кода в свой вопрос, theres ничего не ответить здесь. – WeeklyDad

ответ

2

Вы не предоставили какой-либо код, так что трудно дать вам конкретную помощь, но что-то подобное должно обеспечить некоторое направление:

Poo.h

class JSObject; 
class Poo : cocos2d::CCNode { 
    public: 
    static void hello(JSObject *target, std::string selector); 
} 

Poo.cpp

Poo::hello(JSObject *target, std::string selector) { 
    if (target) { 
     js_proxy_t * p; 
     JS_GET_PROXY(p, target); 
     if (!p) { 
      return; 
     } 

     jsval retval; 
     jsval dataVal = std_string_to_jsval(ScriptingCore::getInstance()->getGlobalContext(), "Hello World"); 

     ScriptingCore::getInstance()->executeFunctionWithOwner(OBJECT_TO_JSVAL(p->obj), selector.c_str(), 1, &dataVal, &retval); 
    } 
} 

Затем в файле JS:

var Demo = cc.Node.extend({ 
    ctor: function() { 
    this._super(); 
    // The usual init stuff 
    Poo.hello(this, "myCallback"); 
    }, 

    myCallback: function(msg) { 
    cc.log("I got a message back from C++: " + msg); 
    } 
}); 
0

Пожалуйста, вызовите this._super(); в ctor-методе.

ctor: function() 
{ 
    this._super(); 
    // The usual init stuff 
    Poo.hello(this, "myCallback"); 
} 
+0

Привет, добро пожаловать в переполнение стека! Возможно, вы захотите добавить немного более подробное объяснение того, что это делает, чтобы оно было более релевантным для других людей и ясно, что он делает. –

0

Этот ответ больше не работает с последними версиями Cocos2dx. 3.12 не имеет «JS_GET_PROXY» ...

Я провел несколько дней, пытаясь выяснить, как запустить вызов функции JS из C++, безрезультатно. Поэтому в конце дня я обнаружил хакерский способ отправки и получения сообщений между ними, создав пользовательские cc.nodes и используя уже реализованные функции getter и setter для отправки информации в свои поля.

Смежные вопросы