2012-02-08 5 views
0

Я следующее (псевдо) кодTriplePlay Аниматор добавить слой

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"); 
    } 
}); 

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

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

любая идея whay я делаю не так?

ответ

1

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

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

Сказанное: достаточно хорошо анимировать интерфейс интерфейса Root, потому что он привязывает весь пользовательский интерфейс к графику сцены PlayN.

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

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

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

+0

Спасибо, Майкл! – AndresQ

Смежные вопросы