irrKlang get ISound* from play2D()
irrKlang get ISound* from play2D()
我正试图用irrKlang库加载一个声音,它在播放时运行良好,但我想获得PlayLength()
和PlayPosition()
属性,但完成后程序崩溃。这就是我所做的:
#define ResX "res.mod"
irrklang::ISoundEngine* se = irrklang::createIrrKlangDevice();
if( !se->isCurrentlyPlaying( ResX ) ){
irrklang::ISound *s = se->play2D( ResX, false, false, false );
while( s->getPlayPosition() < s->getPlayLength() ) //Do something
}
当我执行s->getPlayPosition()
或s->getPlayLength()
程序时,崩溃
我先澄清一下:我无法使用while( se->isCurrentlyPlaying( ResX ) )
,因为有时媒体停止播放时isCurrentlyPlaying
()不会返回0。
您没有检查play2D的返回值,看它是否是有效的指针(而且不是)
您的代码显示:
irrklang::ISound *s = se->play2D( ResX, false, false, false );
根据文件:
仅当参数"track"、"startPaused"或"enableSoundEffects"设置为true时,才返回指向ISound的指针。注意:如果此方法返回ISound作为结果,则在不再需要ISound接口后,必须调用ISound::drop()。否则会造成内存浪费。如果无法播放声音,此方法也可能返回0,尽管"track"、"startPaused"或"enableSoundEffects"已设置为true。
因此,您为"track"、"startPaused"answers"enableSoundEffects"传递false,文档明确表示,除非其中一个为true,否则不会返回有效指针。
相关文章:
- 如何解决"invalid conversion from 'char' to 'const char*'"
- std::async from std::async in windows xp
- std::is_reference from std::any
- std::time_point from and to std::string
- "No suitable conversion function from 'std::string' to 'const char *' exists"
- std::chrono::time_point from std::string
- Visual accept std::string from std::byte iterator
- C++中链表的错误"Abort signal from abort(3) (sigabrt) "
- dopen():不以 root 身份运行时"failed to map segment from shared object"
- C++ 中的"template <typename From, typename Tag> struct Alias;"是什么?
- from std::vector to adept::avector
- qt get child (Callout) from QChart
- Webassembly from Javascript
- Generate boost::uuids::uuid from boost::compute::detail::sha
- 什么是"Reading unbounded stream from standard input (Memory Management)"的例子
- Calling C++ dll from python
- 为什么我会收到"invalid conversion from 'Queue*/Stack*' to 'int'"错误消息?
- std::chrono 在从 main 或 from 类方法使用时给出不同的值
- Calling Python Script from Visual Studio C++ Solution
- irrKlang get ISound* from play2D()