2012-02-08 82 views
0

我有以下的(伪)代码三网合一动画添加图层

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

它工作的线会打印好了,所以我想我更新的动画权,但标签是永远不会加入到现场!

如果我取消它按预期工作(该标签1秒后加)的Runnableroot.add(l),但它不与anim.delay(1500).then().add(root.layer, l.layer);

任何想法whay我做错了添加得到什么?

回答

1

您不能仅将TPUI Widget的图层添加到其他图层,并且期望Widget能够正确呈现。必须通过Group.add将小部件添加到其父项。

您正在使用的动画代码更多地设计用于为原始PlayN图层设置动画比UI元素。 UI元素通常使用控制图层所处位置的LayoutManager进行布局。如果您试图直接为该图层设置动画效果,那么会让布局管理员感到困惑,并且通常会将所有内容都弄乱。

也就是说,将接口的Root设置为动画是非常安全的,因为它将整个UI锚定到PlayN场景图中。

如果你真的想尝试一下你在上面做什么,不要使用Animator.add使用:

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

(如你有以上)的正确添加LabelRoot,并触发验证和渲染的Label

+0

谢谢Michael! – AndresQ 2012-02-09 19:55:06