Мой вопрос не относится к JavaScript, но C++:Gtkmm3: ждать перехода Css закончить
В gtkmm3, внешний вид приложений управляется с помощью CSS, поэтому переходы могут быть установлены так:
тему. 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")
С помощью этого кода пользователь видит только «желтое» состояние кнопки, а не предыдущие, поскольку переходы пропускаются. Как отображать все изменения цвета один за другим?
EDIT:
Мое приложение является игра, в которой кнопки окрашены в соответствии с их лейблом. Эта метка может меняться несколько раз очень близко, и я хочу, чтобы пользователь увидел эти изменения, чтобы увидеть переходы между каждым состоянием. Таким образом, это не просто вспышка (мой пример был не идеальным, если вы хотите весь код приложения, вы можете получить его here).
EDIT 2:
Я изменил код выше и следующие предложения, чтобы объяснить мою проблему лучше.
Будет ли это работать на каждой машине? – Felandral
Я отредактировал мой вопрос, чтобы быть более точным (ваш ответ не разрешает мою проблему) – Felandral
Я думаю, что так и есть. Если вы установите тайм-аут, например, 1050 мс, то вы получите 500 мс перехода к фиолетовому, 50 мс фиолетовой вспышки и 500 мс перехода обратно к исходному цвету. – ptomato