Я играл с беспорядком и немного запутался в том, как работать с Актерами и дочерними актерами. Начнем с простого примера, который вызвал у меня некоторую путаницу. Я создаю два Беспорядок :: Прямоугольники (им с помощью привязок Cluttermm) и сделать второй ребенок из первого:Работа с детьми. Актёры в API Clutter.
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()?
Эта путаница проходит немного глубже. Ранее сегодня я попытался написать более сложный композитный актер, состоящий из нескольких актеров (например, прямоугольников и т. Д.). Хотя визуально эта задача была успешной, я столкнулся с серьезными трудностями при попытке привязать обратные вызовы событий к этим дочерним актерам - на самом деле, насколько я мог сказать, что события НИКОГДА не появятся у детей родительского актера.
Это оставляет меня очень смущенным. Как, например, создать кнопку с использованием беспорядка? Вам нужно было бы создать собственную систему обнаружения/управления событиями, или это единственный способ связать обратный вызов события с дочерним актором, добавив ребенка на сцену вместо фактического родителя?
Это меня очень смутило и, учитывая текущую нехватку литературы, мы с благодарностью будем благодарны!
Оба rect2 и Прямоугольник имеет такой же размер, и вы переехали ребенка, rect2 в поз (0,0) относительно для родителя, который делает его точно вписывающимся в его родительский прямоугольник. Так как же это будет видно? – ScarCode
Я забыл изменить эту позицию ... Первоначально я думал, что, возможно, прямоугольник был перемещен относительно родительского прямоугольника, и, как результат, оказался вне экрана. даже если позиция установлена на (0,0), зеленые прямоугольники не видны, отображается только красный родительский прямоугольник. – user1421028