-2

在我的 cocos2d-x js 项目中,我使用 cxx-generator 将 c++ 函数绑定到 js,这样,我创建了一个 ios alertView 并从我的 js 代码中显示它,但是当用户按下 OK 按钮时,我可以将事件传递给 js现在,我尝试并搜索了所有 2 天,但我无法做到,如果有人知道解决方案是什么,请帮助我,非常感谢!

4

3 回答 3

2

你没有提供任何代码,所以很难给你具体的帮助,但这样的事情应该提供一些方向:

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

便便.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);
  }
});
于 2013-04-03T03:55:34.527 回答
0

请调用 this._super(); 在ctor方法中。

ctor: function()
{
    this._super();
    // The usual init stuff
    Poo.hello(this, "myCallback");
}
于 2013-06-26T05:12:00.220 回答
0

这个答案不再适用于最新的 Cocos2dx 版本。3.12 没有“JS_GET_PROXY”...

我花了几天时间试图弄清楚如何从 C++ 触发对 JS 函数的调用,但无济于事。因此,最终我找到了一种在两者之间发送和接收消息的巧妙方法,方法是创建自定义 cc.nodes 并使用已经实现的 getter 和 setter 函数在其字段中发送信息。

于 2016-09-02T11:46:08.717 回答