Flash, но используйте избыточность. Используя такую библиотеку, как SWFObject , вы можете динамически загружать флэш-файл поверх другого элемента (также называемого «альтернативным содержимым»). Есть хороший учебник по этому вопросу, который вы можете найти здесь (он также указан на веб-сайте SWFObject).
Итак, почему вспышка, а не GIF? По сути, это из-за альтернативного решения для контента, описанного выше, поскольку вы получаете больше гибкости в том, какой контент вы поставляете. Мобильные пользователи, например, оценят статическое изображение (или вообще ничего) вместо анимированного GIF.
Сказав это, вы также сможете создавать более качественные анимации со вспышкой. И при определенных обстоятельствах вы сможете сопоставить (или даже лучше) размер файла .swf с .gif для той же анимации.