在待筛选邮件 API 中使用儿童参与者

Working with Children Actors in the Clutter API

本文关键字:参与者 API 筛选      更新时间:2023-10-16

我一直在玩弄杂乱,对如何与演员和儿童演员合作有点困惑。让我们从一个简单的例子开始,它引起了我的一些困惑。 我创建了两个 Clutter::Rectangles(我使用 Cluttermm 绑定),并使第二个成为第一个的子项:

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();

据我了解,这应该使两个矩形可见,但 rectangle2 不是。 尽管它成为第一个矩形的父级,但它无处可寻。 这是为什么呢? set_parent()的真正含义是什么?

这种困惑更深一些。 今天早些时候,我尝试编写一个更复杂的复合Actor,它由许多Actor(例如矩形等)组成。 虽然从视觉上看,这个任务是成功的,但我在尝试为这些子演员附加事件回调时遇到了严重的困难——事实上,据我所知,这些事件永远不会到达父演员的孩子。

这让我非常困惑。 例如,如何使用杂乱创建按钮框? 是否必须创建自己的参与者检测/事件管理系统,或者通过将子角色而不是实际父角色添加到舞台来将事件回调连接到子参与者的唯一方法?

这让我非常困惑,考虑到目前缺乏文献,任何帮助将不胜感激!

矩形

不是一个容器:你不能将子项添加到一个容器中;或者,至少,你可以将一个演员的父级设置为一个非容器演员,但该演员不会被绘制——这很可能不是你想要的。

应使用容器 actor 并向该容器添加矩形。

不过,这对于 Clutter ≤ 1.8 有效;在当前稳定版的 Clutter (1.10) 中,有各种更改:

  • ClutterActor 替换了大部分已弃用的 API - 即您应该创建 Actor 实例并向其中添加子实例。
  • 杂物演员可以抱孩子,默认情况下会画
  • ;
  • ClutterRectangle 在 Clutter 1.10 中已被弃用,尽管它的行为尚未更改(向其添加子项不会导致这些子项被绘制)。
  • clutter_actor_set_parent() 在 1.10 中也被弃用,取而代之的是更类似于 DOM 的 add_child()。

ClutterActor 的 API 参考应该会阐明这个问题:

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