我试图基本上模仿 Wasm 模块中的
cin
功能,从 `. 中获取用户的输入
我正在解决定义
extern "C" function
的问题,然后我将使用--js-library
标志从JS导入我的c ++代码。
我确实设法从
<input>
获得用户的输入,但我真正无法实现的是让 c++ 程序等待用户输入一个值。
另一个提示来自这个项目。在src/Main_Maze.cpp中作者实现了获取用户的输入并退出主函数使用:
LOOP_SPEED = 60;
INF_LOOP = true;
void main(){
/* CODE */
emscripten_set_main_loop(start_prompt, LOOP_SPEED, INF_LOOP);
...
}
据我所知
start_prompt()
被加载到主线程中,它会一直运行直到用户输入一个值。
void start_prompt(void) {
int start_bool = 0;
// Inline JS - Get the value entered into the faux CLI
start_bool = EM_ASM_INT({
return input;
}, start_bool);
// Select 1 to start
if (start_bool == 1) {
/* CODE */
emscripten_cancel_main_loop();
emscripten_set_main_loop(start_room, LOOP_SPEED, INF_LOOP);
}
}
当用户输入 1 时,函数调用
emscripten_cancel_main_loop()
并召回
emscripten_set_main_loop(start_room, LOOP_SPEED, INF_LOOP)
进入另一个功能。
现在我的问题是:
如何暂停/退出
main()
功能,等待用户输入并恢复main()
?
查看emscripten文档,我可以看到有很多功能可以同步阻塞或暂停主线程的执行,例如:
emscripten_push_uncounted_main_loop_blocker(...)
emscripten_pause_main_loop()
但没有任何效果。你能给我举个例子吗? 请告诉我是否应该发布我的代码。
谢谢