0

我有一个杂乱警告我无法摆脱。

在我的项目中,我有一个自定义布局,由几个 ClutterConstraint(s) 构建,它处理几个 ClutterBox(es)。

其中一个 ClutterBox 包含许多 ClutterTexture,并以手工布局放置在其中。为了获得那个(手工布局),我曾经g_signal_connect连接过“allocation-changed”通知,在他的回调中我写了所有的放置逻辑。

运行时出现的警告是"Clutter-WARNING **: The actor 'ClutterBox' is currently inside an allocation cycle; calling clutter_actor_queue_relayout() is not recommended".

有人可以建议我如何避免这个警告?

4

1 回答 1

1

您不能在分配其父项期间通过分配更改信号更改子项的分配 - 即您不能在分配父项期间在 allocate() 虚函数之外更改子项的大小或位置。

如果要为容器实现布局管理策略,则必须对容器进行子类化并覆盖其 allocate() 虚函数;或者,您应该实现一个 ClutterLayoutManager,并将其分配给 actor。

ClutterBox 在 Clutter 1.10 中也已被弃用:ClutterActor 现在为实现布局管理策略所需的委托提供完整的 API 和支持。

于 2012-06-21T13:43:32.380 回答