0

私は雑然として遊んでいて、アクターと子アクターの操作方法について少し混乱しています。いくつかの混乱を引き起こした簡単な例から始めましょう。2 つの Clutter::Rectangles を作成し (Cluttermm バインディングを使用しています)、2 番目を最初の子にします。

Glib::RefPtr<Clutter::Rectangle> rect = Clutter::Rectangle::create();
rect->set_color(Clutter::Color(255, 0, 0, 255));
rect->set_size(100, 100);
rect->set_position(500,500);
rect->show();
stage->add_actor(rect);

Glib::RefPtr<Clutter::Rectangle> rect2 = Clutter::Rectangle::create();
rect2->set_color(Clutter::Color(0, 255, 0, 255));
rect2->set_size(100, 100);
rect2->set_position(0,0);
rect2->set_parent(rect);
rect2->show();

私が理解していることから、これにより2つの長方形が表示されるはずですが、rectangle2はそうではありません。最初の四角形の親にしたにもかかわらず、どこにも見つかりません。どうしてこれなの?set_parent() の本当の意味は何ですか?

この混乱はもう少し深いところにあります。今日の初めに、いくつかのアクター (長方形など) で構成される、より複雑な複合アクターを作成しようとしました。視覚的にはこのタスクは成功しましたが、これらの子アクターにイベント コールバックを追加しようとすると、深刻な問題に遭遇しました。

これは私を非常に混乱させます。たとえば、Clutter を使用してボタン ボックスを作成するにはどうすればよいでしょうか。独自のアクター検出/イベント管理システムを作成する必要がありますか?それとも、実際の親の代わりにステージに子を追加することによって、イベント コールバックを子アクターに接続する唯一の方法ですか?

これは私を非常に混乱させ、現在文献が不足していることを考えると、どんな助けも大歓迎です!

4

1 に答える 1

1

Rectangle はコンテナーではありません。子を 1 つに追加することはできません。または、少なくとも、アクターの親をコンテナ以外のアクターに設定することはできますが、そのアクターはペイントされません - これはおそらくあなたが望むものではありません。

コンテナ アクターを使用して、そのコンテナに長方形を追加する必要があります。

ただし、これは Clutter ≤ 1.8 の場合に有効です。Clutter の現在の安定版 (1.10) では、さまざまな変更が加えられています。

  • ClutterActor は、廃止された API のほとんどを置き換えます。つまり、Actor インスタンスを作成し、それらに子を追加する必要があります。
  • ClutterActor は子を保持でき、デフォルトで描画されます。
  • ClutterRectangle は Clutter 1.10 で廃止されましたが、その動作は変更されていません (子を追加しても、それらの子が描画されることはありません)。
  • clutter_actor_set_parent() も 1.10 で廃止され、より DOM に似た add_child() が採用されました。

ClutterActor の API リファレンスは、この問題を明らかにするはずです。

http://developer.gnome.org/clutter/stable/ClutterActor.html

于 2012-05-29T10:33:48.727 に答える