tripleplay Animator добавить слой - PullRequest
       15

tripleplay Animator добавить слой

0 голосов
/ 08 февраля 2012

У меня есть следующий (псевдо) код

root = _iface.createRoot(...)

Label l = new Label("hello world");
anim = Animator.create();
anim.delay(1500).then().add(root.layer, l.layer);
anim.delay(1000).then().action(new Runnable() {
    public void run() {
        // root.add(l);
        System.out.println("it works");
    }
});

строка it it работает печатается нормально, поэтому я предполагаю, что я обновляю анимацию правильно, но метка никогда не добавляется на сцену!

Если я раскомментирую root.add(l) внутри Runnable, он будет работать как ожидалось (метка добавляется через 1 секунду), но не добавляется с anim.delay(1500).then().add(root.layer, l.layer);

есть идеи, что я делаю не так?

1 Ответ

1 голос
/ 09 февраля 2012

Вы не можете просто добавить слой TPUI Widget к другому слою и ожидать, что Widget будет правильно отображаться.Виджет должен быть добавлен к его родителю с помощью Group.add.

Используемый вами код анимации больше предназначен для анимации необработанного слоя PlayN, чем элементов пользовательского интерфейса.Элементы пользовательского интерфейса обычно располагаются с использованием LayoutManager, который контролирует положение слоя.Если бы вы попытались анимировать слой напрямую, вы бы запутали менеджер раскладки и вообще все испортили.

Тем не менее, довольно безопасно анимировать Root интерфейса, потому что это привязывает весь пользовательский интерфейс кГрафик сцены PlayN.

Если вы действительно хотите попробовать то, что делаете выше, не используйте Animator.add use:

action(new Runnable() {
  root.add(l);
});

(как у вас выше), что правильнодобавляет Label к Root и запускает проверку и рендеринг Label.

...