【发布时间】:2021-05-25 01:21:40
【问题描述】:
编辑:我已将这个问题改写为:new question
我目前正在使用flash for c++的回调机制实现,ASInterface.inl你可以在这里看到一个例子:
我正在寻找一个不与 Flash 播放器耦合的通用回调的标准实现(在 std 或 boost 或其他东西中)。 它的作用基本上是实现一个通用的回调对象,可以使用任意数量的原始类型参数调用。
//init callbacks
typedef std::map<std::wstring, Callback> callbacks;
void SomethingHappened(int a, int b) {print a + b;}
string functionName = "SomethingHappened";
callbacks[functionName] = &SomethingHappened;
//use callbacks after xml input arrived:
string xml = "<some xml input document/>";
Callbacks::iterator itCallback = callbacks.find(functionName);
if (itCallback != callbacks.end())
{
//parse arguments
std::vector<std::wstring> args;
_Args::split(xml, args);
ASValue::Array arguments;
for (size_t i = 0, s = args.size(); i < s; ++i)
{
ASValue arg; arg.FromXML(args[i]);
arguments.push_back(arg);
}
ASValue returnValue;
//***this is where the magic happens: call the function***
HRESULT result = itCallback->second.Call(arguments, returnValue);
return result;
}
edit 这是我的流程: 我从“服务器”获得输入消息:消息(字符串命令,字符串 xmlArguments) 它找到名为:命令的回调 它使用参数调用命令(在数量和类型上是任意的)。 我正在寻找的是通用命令的实现(如链接中所示。)
【问题讨论】:
-
什么是
xmlArguments?是要从中解析参数的 xml 文档吗?为什么不像给定的实现那样将其解析为ASValue::Array?我仍然看不到任何需要使用其他调用签名调用的函数 -
@sehe 我想让代码更简单,我从服务器获取一个包含函数名称和参数的 xml。
-
@sehe:我已经转发了这个问题,希望现在更清楚:stackoverflow.com/q/66329804/3234641
标签: c++ c++11 actionscript-3 flash boost