0

在我的插件中,我需要能够在插件加载后触发事件。
我不想使用内置机制(将其添加到对象参数中),因为我需要能够控制与事件触发一起发送的参数。

问题是当我尝试在其中触发事件时onPluginReady它不会触发。在调试时我注意到它m_proxies是空的(在JSAPIImpl::FireEvent),但是如果我尝试在方法中触发事件的相同代码onMouseDown那么它运行良好.

这是我的 createJSAPI 代码:

FB::JSAPIPtr plugin::createJSAPI()
{
    this->jsApi = JSApiPtr(new pluginAPI(FB::ptr_cast<plugin>(shared_from_this()), m_host));
    return this->jsApi;
}

这是 onPluginReady 代码:

void plugin::onPluginReady()
{
    this->getRootJSAPI();
    this->jsApi->fireMyEvent(this->myId);
}

并且事件不会被触发,尽管这样做:

bool plugin::onMouseDown(FB::MouseDownEvent *evt, FB::PluginWindow *)
{
    this->jsApi->fireMyEvent(this->myId);
    return false;
}

这是为什么?

谢谢。

4

1 回答 1

1

onPluginReady 可能会在您调用来自 param 标记的 onLoad 回调之前被调用;这意味着您的事件处理程序尚未附加。这就是 FireBreath 提供 onload 参数回调的原因——它为您提供了一个附加事件处理程序并发现事情已加载的地方。

编辑以从评论中澄清:

回调将提供一个参数,其中包含对根 JSAPI 对象的引用。请注意,在这种情况下,它不是对象或嵌入标记,只是 JSAPI 对象,因此您可以从那里使用任何方法或属性。

于 2013-09-17T16:24:22.830 回答