代号一个并发动画?

时间:2016-09-01 08:34:19

标签: codenameone

在Codename One中,我有一个像UI这样的简单聊天,想要使用animateLayout添加消息(标签)。如果消息之间有时间或者动画时间很短,但是当两个动画重叠时,第二个组件没有动画,它可以正常工作。这是我尝试过的代码(把它放在一个新的代号中,一个项目启动方法):

    Form hi = new Form("Hi World");
    hi.setLayout(new BoxLayout(BoxLayout.Y_AXIS));
    Button button = new Button("Add");
    Label label = new Label("Status");

    button.addActionListener((actionEvent) -> {
        hi.getContentPane().add("asd");
        hi.getContentPane().animateLayout(3000);
    });

    hi.add(button);
    hi.show();

我预计将animateLayout更改为animateLayoutAndWait会解决此问题,但事实并非如此。我也尝试了旧的解决方法:

    Form hi = new Form("Hi World");
    hi.setLayout(new BoxLayout(BoxLayout.Y_AXIS));
    Button button = new Button("Add");
    Label label = new Label("Status");

    button.addActionListener((actionEvent) -> {
        if(!animateLock) {
            animateLock = true;
            hi.getContentPane().add("asd");
            hi.getContentPane().animateLayout(3000);
            animateLock = false;
        }
    });

    hi.add(button);
    hi.show();

其中animateLock是主类的字段。我还尝试将添加包装在Display.getInstance()。callSerially(() - > {code here})中,但它也没有用。 如何处理并发动画?

1 个答案:

答案 0 :(得分:1)

您应该使用AnimationManager.flushAnimation发布动画。这将导致在完成所有其他动画时运行动画。这应该解决冲突。