2017-01-04 1 views
0

私の質問にはJavaScriptを懸念、しかしC++はありません終了するCSSの移行を待つGtkmm3:</p> <p>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:

私はより良い私の問題を説明するために上記のコードと、次の文章を修正。

答えて

0

ボタンを短く紫色にしたいですか?その場合は、ボタンを点滅させる時間を正確に設定するために、GLib::SignalTimeoutでタイムアウトを設定することができます。

+0

これはすべてのマシンで同じですか? – Felandral

+0

より正確に私の質問を編集しました。あなたの答えは私の問題を解決しません。 – Felandral

+0

私はそう思います。たとえば、タイムアウトを1050msに設定すると、紫色への移行が500ms、紫色のフラッシュが50ms、元の色への移行が500msになります。 – ptomato