三重播放Animator添加图层

时间:2012-02-08 18:53:24

标签: playn

我有以下(伪)代码

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 work的行打印好了,所以我假设我正在更新动画,但标签永远不会添加到场景中!

如果我取消注释root.add(l) Runnable内的anim.delay(1500).then().add(root.layer, l.layer);按预期工作(标签会在1秒后添加),但不会添加{{1}}

任何想法,我做错了吗?

1 个答案:

答案 0 :(得分:1)

您不能只是将TPUI Widget的图层添加到另一个图层,并期望Widget正确呈现。必须通过Group.add将小部件添加到其父级。

您正在使用的动画代码更适用于动画原始PlayN图层而不是UI元素。 UI元素通常使用LayoutManager进行布局,Root控制图层的位置。如果你试图直接为图层设置动画,你会混淆布局管理器,并且通常会弄乱一切。

也就是说,为界面的Animator.add设置动画是非常安全的,因为它将整个UI锚定到PlayN场景图中。

如果您真的想尝试上面所做的事情,请不要使用action(new Runnable() { root.add(l); }); 使用:

Label

(如上所述)正确地将Root添加到Label,并触发{{1}}的验证和呈现。