Мой вопрос касается не JavaScript, а C ++:
В gtkmm3 внешний вид приложения управляется CSS, поэтому переходы можно настроить так:
theme.css:
.purple {
transition: 500ms linear;
background-image: -gtk-gradient (radial,
center center, 0,
center center, 1,
from (#FFB2E8),
to (#80005A));
}
main.cc:
// Create and define the StyleContext
CssProvider = Gtk::CssProvider::create();
CssProvider->load_from_path (Glib::build_filename (UI_DIR, "theme.css"));
Glib::RefPtr<Gtk::StyleContext> ButtonContext = button->get_style_context ();
ButtonContext->add_provider (CssProvider,
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
// Assign new color
ButtonContext->add_class ("purple");
// Assign an intermediate color
ButtonContext->remove_class ("purple");
ButtonContexy->add_class ("green");
// To something
// ... ...
// Change the color again
ButtonContext->remove_class ("green");
ButtonContext->add_class ("yellow")
С помощью этого кода пользователь видит только «желтое» состояние кнопки, а не предыдущие, потому что переходы пропускаются.
Как отобразить все изменения цвета один за другим?
РЕДАКТИРОВАТЬ :
Мое приложение — игра, где кнопки окрашены в соответствии с их ярлыком. Эта метка может очень сильно меняться несколько раз, и я хочу, чтобы пользователь видел эти изменения, чтобы видеть переходы между каждым состоянием. Таким образом, это не просто флэш (мой пример не был идеальным, если вы хотите весь код приложения, вы можете получить его Вот).
РЕДАКТИРОВАТЬ 2:
Я изменил код выше и следующие предложения, чтобы лучше объяснить мою проблему.
Вы пытаетесь сделать кнопку мигать фиолетовым на короткое время? Если это так, вы можете установить тайм-аут с помощью GLib::SignalTimeout
на правильное количество времени, которое вы хотите, чтобы кнопка мигала в течение.
Других решений пока нет …