Firebreath c++一些指针的理解

Firebreath C++ some pointer understanding

本文关键字:指针 c++ Firebreath      更新时间:2023-10-16

我在这里问了一个问题,点击鼠标屏幕坐标,得到了一个很好的答案(确认的一个),感谢Gaurav Raj。在这个示例中:

bool MirrarOrnaments::onMouseDown(FB::MouseDownEvent *evt, FB::PluginWindow *) 
{
  if(evt->m_Btn == FB::MouseButtonEvent::MouseButton_Left) 
  {
    /** 
     * apiPtr is the pointer to FB::JSAPIPtr 
     * mousePositionCallback is the JSAPI function which takes variant list of mouse 
     * co-ordinates as argument 
     */ 
    apiPtr->invoke("mousePositionCallback", FB::variant_list_of(evt->m_x)(evt->m_y)); 
  }
}

当我得到,最后一个字符串必须运行mousePositionCallback函数在我的JavaScript与FB::variant_list参数;但是我不能理解apiPtr指针的目的,我在哪里可以得到它,以及如何这个指针到FB::JSAPIPtr必须实际上看在我的代码。

FireBreath中的FB::JSAPIPtr类型只是boost::shared_ptr(共享自动指针,因此您不必在对象上调用delete,也不必担心它消失)的方便别名…

尝试添加getRootJSAPI()调用,这应该为您返回apiPtr。

bool MirrarOrnaments::onMouseDown(FB::MouseDownEvent *evt, FB::PluginWindow *) 
{
  if(evt->m_Btn == FB::MouseButtonEvent::MouseButton_Left) 
  {
    /** 
     * apiPtr is the pointer to FB::JSAPIPtr 
     * mousePositionCallback is the JSAPI function which takes variant list of mouse 
     * co-ordinates as argument 
     */ 
    // if you want to access it from the API Part
    // FB::JSAPIPtr apiPtr(boost::make_shared<FBYourPluginAPI>(m_plugin));
    //add the next line:
    FB::JSAPIPtr apiPtr = m_plugin.lock()->getRootJSAPI();
    apiPtr->Invoke("mousePositionCallback", FB::variant_list_of(evt->m_x)(evt->m_y)); 
  }
}