我想在某个时刻停止我的样本,但它给我发了一些奇怪的错误。 这是我的代码:
ALLEGRO_SAMPLE_ID id;
ALLEGRO_SAMPLE* spl = al_load_sample("sound.ogg");
al_play_sample(spl, 1.0, 0, 1.0, 0, &id);
al_stop_sample(&id);
al_destroy_sample(spl)
答案 0 :(得分:0)
正如here建议的那样,Allegro很可能会在之前被强行摧毁正在播放的对象试图停止&破坏:
你确定在摧毁一切后Allegro被去了否定动?我通过将关闭代码放在atexit回调中但让Allegro注册一个自定义的atexit回调来遇到这个问题。在这种情况下,可以先运行Allegro的atexit回调,因此您必须使用al_install_system(NULL,ALLEGRO_VERSION_INT)并在自定义的atexit回调中调用al_uninstall_system(),而不是al_init()。
答案 1 :(得分:-1)
试试这个
ALLEGRO_SAMPLE_ID *id_sample = NULL;
id_sample = malloc(sizeof(ALLEGRO_SAMPLE_ID));
l_play_sample(sample, 1.0, 0.0, 1.0, ALLEGRO_PLAYMODE_BIDIR, id_sample);
printf("id_sample %p\n", id_sample);
al_rest(2);
al_stop_sample(id_sample);