我想停止在某個點的示例,但它給我一些奇怪的錯誤。 這是我的代碼:C++ Allegro停止示例
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)
我想停止在某個點的示例,但它給我一些奇怪的錯誤。 這是我的代碼:C++ Allegro停止示例
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)
試試這個
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);
這就和原文一樣代碼,只是使用堆而不是堆棧。給我同樣的錯誤。 –
至於建議here,快板最有可能運氣不好被破壞做之前播放的對象是試圖阻止&破壞:
您是否確信Allegro在您銷燬所有內容後已被初始化?我遇到了這個問題,把關閉代碼放在atexit回調函數中,但讓Allegro註冊了一個自定義的atexit回調函數。在這種情況下,Allegro的atexit回調可能會首先運行,因此,您必須使用al_install_system(NULL,ALLEGRO_VERSION_INT)並在您的自定義atexit回調中調用al_uninstall_system(),而不是al_init()。
「......給我發一些奇怪的錯誤......」 –
是的,在控制檯裏它說斷言失敗:spl_id - > _ id!= - 1,文件.... – Kebapmanager