CN1 - onTitleScrollAnimation прослушивается - PullRequest
0 голосов
/ 16 ноября 2018

Я следую указаниям на официальной домашней странице 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 и вызывающий исключение.

Сначала я подумал, что у меня есть разные шрифты, которые портят анимацию. Однако единственный шрифт в моей теме, который настроен, - это один из заголовков заголовков, которые установлены в native: mainthin для GUID "title" и "titleShrunk". Несмотря на тот же шрифт, я все еще получаю эту проблему.

Вышесказанное - отличное руководство, и я надеялся довести его до конца, поскольку это также очень крутая анимация.

1 Ответ

0 голосов
/ 17 ноября 2018

Кажется, ваш проект действительно устарел, что означает, что эта проблема могла быть исправлена ​​давно. Пожалуйста, убедитесь, что ваш плагин обновлен, затем следуйте инструкциям здесь, чтобы убедиться, что ваши библиотеки не ниже https://www.codenameone.com/blog/tip-fix-issue-missing-builds.html

Если это все еще происходит, обновите трассировки стека новыми исключениями, так как номера строк будут другими. Затем прокомментируйте здесь, чтобы я посмотрел обновление к вопросу и исправил ответ.

...