widget.cpp:109:13: error: no member named 'stop' in 'osgEarth::SkyNode'
时间: 2023-07-28 20:07:03 浏览: 83
这个错误是由于在widget.cpp文件的第109行中,调用了osgEarth::SkyNode的stop函数,但是该函数在osgEarth::SkyNode中不存在导致的。可能是由于你使用的osgEarth版本不同导致的接口变化。你可以查看一下你的osgEarth版本和官方文档中的版本是否一致,或者尝试使用其他函数代替stop函数。
如果你使用的是 osgEarth 2.10 版本及以上,可以使用 osgEarth::Util::SkyNode::stop() 函数来停止 SkyNode 的运行。示例代码如下:
```
osg::ref_ptr<osgEarth::Util::SkyNode> skyNode = new osgEarth::Util::SkyNode();
// 其他代码
skyNode->stop(); // 停止 SkyNode 的线程
```
如果你使用的是 osgEarth 2.9 版本或者更早的版本,可以使用 osgEarth::SkyNode::setDateTime() 函数来停止 SkyNode 的运行。示例代码如下:
```
osg::ref_ptr<osgEarth::SkyNode> skyNode = new osgEarth::SkyNode();
// 其他代码
skyNode->setDateTime(osgEarth::DateTime(1970, 1, 1, 0, 0, 0)); // 停止 SkyNode 的运行
```
这段代码中,将 SkyNode 的时间设为 1970 年 1 月 1 日 0 点 0 分 0 秒,SkyNode 就会停止运行。注意,停止 SkyNode 的运行可能需要一定的时间,因此最好在退出程序前预留一些时间等待 SkyNode 停止完成。
阅读全文