2013-10-26 46 views
-1

我想停止在某個點的示例,但它給我一些奇怪的錯誤。 這是我的代碼: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) 
+0

「......給我發一些奇怪的錯誤......」 –

+0

是的,在控制檯裏它說斷言失敗:spl_id - > _ id!= - 1,文件.... – Kebapmanager

回答

-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); 
+1

這就和原文一樣代碼,只是使用堆而不是堆棧。給我同樣的錯誤。 –

0

至於建議here,快板最有可能運氣不好被破壞做之前播放的對象是試圖阻止&破壞:

您是否確信Allegro在您銷燬所有內容後已被初始化?我遇到了這個問題,把關閉代碼放在atexit回調函數中,但讓Allegro註冊了一個自定義的atexit回調函數。在這種情況下,Allegro的atexit回調可能會首先運行,因此,您必須使用al_install_system(NULL,ALLEGRO_VERSION_INT)並在您的自定義atexit回調中調用al_uninstall_system(),而不是al_init()。