Cheerp是C / js / wasm转译器。 Screeps是一款编程视频游戏。
如何从已编译的C++代码中读取 Game.time
变量? (在爬行中)
#include <cheerp/client.h>
#include <iostream>
using namespace std;
namespace client {
class Game : public Object {
public:
static volatile double time;
};
extern volatile Game &Game;
}
void webMain() {
cout << __TIME__ << ": The current time is: " << client::Game.time << endl;
}
我已经尝试了多种变体:
extern
,volatile
和static
client
和cheerp
命名空间Node
/ Object
int32_t
vs double
vs float
作为我似乎得到:
NaN
0
1
如何在C++代码中与Javascript对象和变量正确接口(interface)?至少可以说,cheerp文档非常稀疏...
注意:cheerp实际上从来不会生成正确的Javascript。关于
Game
对象的处理方式始终存在一些不一致之处,并且在许多情况下,它错误地尝试将Game.d
索引为数组而不是Game.time
。 最佳答案
在client
命名空间中声明的类不应具有成员字段。
要访问外部JS对象的属性,您需要添加以get_
和set_
开头的方法,以分别读取和写入该属性:
#include <cheerp/client.h>
#include <iostream>
using namespace std;
namespace client {
class Game : public Object {
public:
double get_time();
};
extern Game &Game;
}
void webMain() {
cout << __TIME__ << ": The current time is: " << client::Game.get_time() << endl;
}
另外,您无需在此处使用volatile。