在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(() - > )中,但它也没有用 . 如何处理并发动画?
1 回答
您应该使用AnimationManager.flushAnimation发布动画 . 这将导致在完成所有其他动画时运行动画 . 这应该解决冲突 .