Allegro 5 как спрятать / выгрузить растровое изображение
Я программирую простую 2D-игру, и я столкнулся с небольшой, но раздражающей проблемой, я не могу выгрузить растровые изображения. Например, когда игра запускается, появляется заставка с изображением, которое должно быть выгружено через 2 секунды (как и в любых играх, когда она запускается, мы можем увидеть название компании, которая сделала это...). Через 2 секунды растровое изображение не выгружается.
Код:
void SplashScreen::loadContent()
{
image1 = al_load_bitmap("SplashScreen/image1.png");
image2 = al_load_bitmap("SplashScreen/image2.png");
al_draw_bitmap(image1, 0, 0, NULL);
al_flip_display();
al_rest(2);
al_destroy_bitmap(image1);
al_flip_display();
al_draw_bitmap(image2, 0, 0, NULL);
al_flip_display();
al_rest(2);
al_destroy_bitmap(image2);
al_flip_display();
}
Спасибо за вашу помощь и ваш просмотр.
1 ответ
Чтобы "выгрузить" ваше растровое изображение, вам нужно сделать еще кое-что. Не существует такого понятия, как "очистка одного растрового изображения без очистки экрана", по крайней мере, не так, как вы хотите.
В этом случае я думаю, что вы действительно хотите очистить весь экран.
Вы хотите что-то подобное
void SplashScreen::loadContent() {
image1 = al_load_bitmap("SplashScreen/image1.png");
image2 = al_load_bitmap("SplashScreen/image2.png");
//clear screen
clearScreen();
//draw your splash
al_draw_bitmap(image1, 0, 0, NULL);
//display it
al_flip_display();
//wait for 2 seconds
al_rest(2);
//fresh new frame
clearScreen();
//draw this second image, I don't know what this is
al_draw_bitmap(image2, 0, 0, NULL);
//display it
al_flip_display();
//wait for 2 seconds
al_rest(2);
//fresh screen again
clearScreen();
//display it
al_flip_display();
}
Общая процедура рисования для игры выглядит примерно так
1-очистить экран
2-рисовать все, что вы хотите
3-флип дисплей
4- подождите несколько миллисекунд
5-перезапустить обратно на 1
Таким образом, вы получите новый экран в начале каждого кадра. Единственная разница для заставки в том, что вы ждете 2 секунды, а не несколько миллисекунд
В конце вашей программы вызовите destroy_bitmap, чтобы освободить ресурсы.