2013-05-21 31 views
0

代码示例:我怎样才能做一个回调从FireBreath为JavaScript

bool MirrarOrnaments::onMouseDown(FB::MouseDownEvent *evt, FB::PluginWindow *) 
{ 
    if(evt->m_Btn == FB::MouseButtonEvent::MouseButton_Left) 
    { 
    //from here i need to function in my JavaScript with argument of FB::variant_list_of(evt->m_x)(evt->m_y)); 
    } 
} 

这可能吗?
试图简单地返回variant_list在JS使用它,

,但它需要被COS反正bool类型:

BEGIN_PLUGIN_EVENT_MAP() 
EVENTTYPE_CASE(FB::MouseDownEvent, onMouseDown, FB::PluginWindow)  
END_PLUGIN_EVENT_MAP() 

回答

3

有回调到JavaScript首先需要传递一个回调作为输入你的JSAPI插件。

,你可以做到这一点,如下所示:

在PluginTestAPI.cpp在PluginTestAPI.h

registerMethod("SetCallback", make_method(this, &PluginTestAPI::SetCallback)); 

int PluginTestAPI::SetCallback(const FB::JSObjectPtr& callback) 
{ 
    m_CallBack = callback; 
} 

class PluginTestAPI 
{ 
    FB::JSObjectPtr* m_pCallback; 
    int SetCallback(const FB::JSObjectPtr& callback); 

,然后在JavaScript

通过此功能,当您设置:

function myJSCallback (params) { 
} 

myplugin.SetCallBack(myJSCallback); 

然后你就可以从C调用这个回调++代码:

bool MirrarOrnaments::onMouseDown(FB::MouseDownEvent *evt, FB::PluginWindow *) 
{ 
    if(evt->m_Btn == FB::MouseButtonEvent::MouseButton_Left) 
    { 
    //from here i need to function in my JavaScript with argument of  
    m_pCallback->Invoke(FB::variant_list_of(evt->m_x)(evt->m_y)); 
    } 
} 
+1

亦如http://www.firebreath.org/display/documentation/Firing+Events+from+JSAPI – taxilian

+1

还要注意描述,你可以触发事件如果你要通过引用传递FB :: JSObjectPtr,它应该是const FB :: JSObjectPtr&(确保它是const)。否则,即使它编译了,也可能意外引起一些问题。 (我编辑帖子反映) – taxilian

+0

你是正确的出租车,感谢您的编辑,这实际上是它的代码完成的方式,你也是正确的事件,我只是选择了一个答案,而不是5;) –