CN1-onTitleScrollAnimation错误

时间:2018-11-16 20:24:06

标签: java animation mobile codenameone

我一直在以下官方CN1主页上关注该指南:https://codenameone.teachable.com/courses/java-for-mobile-devices-introducing-codename-one/lectures/2647773

效果非常好,对后续工作很有帮助。最后,我们讨论了缩小工具栏的动画实现,有一个错误,我无法解释。

这是代码段:

// animations
ComponentAnimation c1 = shoppingList.getToolbar().createStyleAnimation("ShopToolbarShrunk", 200);
ComponentAnimation c2 = titleLabel.createStyleAnimation("TitleShrunk", 200);
ComponentAnimation c3 = fab.createStyleAnimation("FloatingActionButtonShrunk", 200);
shoppingList.getAnimationManager().onTitleScrollAnimation(c1, c2, c3);

代码运行,模拟器打开。我可以移动鼠标滚轮或鼠标来滚动列​​表,然后动画开始。就在动画的最小尺寸之前,它崩溃并显示以下轨迹:

java.lang.StackOverflowError
    at java.awt.Font.<init>(Unknown Source)
    at java.awt.Font.<init>(Unknown Source)
    at java.awt.Font.deriveFont(Unknown Source)
    at com.codename1.impl.javase.JavaSEPort.deriveTrueTypeFont(JavaSEPort.java:4841)
    at com.codename1.ui.Font.derive(Font.java:273)
    at com.codename1.ui.Component$2.updateState(Component.java:2625)
    at com.codename1.ui.animations.ComponentAnimation.updateAnimationState(ComponentAnimation.java:95)
    at com.codename1.ui.AnimationManager$2.scrollChanged(AnimationManager.java:139)
    at com.codename1.ui.util.EventDispatcher.fireScrollEvent(EventDispatcher.java:427)
    at com.codename1.ui.Component.setScrollY(Component.java:1879)
    at com.codename1.ui.Component.laidOut(Component.java:4409)
    at com.codename1.ui.Container.doLayout(Container.java:1430)
    at com.codename1.ui.Container.layoutContainer(Container.java:1412)
    at com.codename1.ui.Container.doLayout(Container.java:1425)
    at com.codename1.ui.Container.layoutContainer(Container.java:1412)
    at com.codename1.ui.Container.doLayout(Container.java:1425)
    at com.codename1.ui.Container.layoutContainer(Container.java:1412)
    at com.codename1.ui.Container.revalidate(Container.java:1058)
    at com.codename1.ui.AnimationManager$2.scrollChanged(AnimationManager.java:144)
    at com.codename1.ui.util.EventDispatcher.fireScrollEvent(EventDispatcher.java:427)
    at com.codename1.ui.Component.setScrollY(Component.java:1879)
    at com.codename1.ui.Component.laidOut(Component.java:4409)
    at com.codename1.ui.Container.doLayout(Container.java:1430)
    at com.codename1.ui.Container.layoutContainer(Container.java:1412)
    at com.codename1.ui.Container.doLayout(Container.java:1425)
    at com.codename1.ui.Container.layoutContainer(Container.java:1412)
    at com.codename1.ui.Container.doLayout(Container.java:1425)
    at com.codename1.ui.Container.layoutContainer(Container.java:1412)
    at com.codename1.ui.Container.revalidate(Container.java:1058)
    at com.codename1.ui.AnimationManager$2.scrollChanged(AnimationManager.java:144)
...

跟踪重复不断。可以很容易地看到这是一个无限循环,导致Java堆栈溢出,并引发异常。

首先,尽管我有不同的字体使动画混乱。但是,主题中唯一被自定义的字体是标题栏之一,标题栏和GUID都设置为native:mainthin。即使其字体相同,我仍然会遇到此问题。

以上内容是一个很好的指南,我希望可以一​​直进行到最后,因为这也是一个非常酷的动画。

1 个答案:

答案 0 :(得分:1)

看来您的项目确实过时了,这意味着此问题可能已在很久以前得到解决。请确保您的插件是最新的,然后按照此处的说明进行操作,以确保您的库为最新的https://www.codenameone.com/blog/tip-fix-issue-missing-builds.html

假设仍然发生这种情况,请使用新的例外更新堆栈跟踪,因为行号会有所不同。然后在这里评论,以便我看到问题的更新并修改答案。