Pepper 取消 运行 动画

Pepper cancel running animation

目前正在开发 Pepper 机器人(Android 开发者),我正在尝试使用一些 "basic" 动画(来自 QiSQK 库)。 例如,当调用 WS 时,我使用 animation/animate 启动 "think" 动画。然后,当 WS 调用结束时,我尝试使用另一个动画 ("showing the tablet")。

我看到如果上一个动画不是 finished/cancelled,Pepper 就不能再制作两次动画。 所以,我使用了 requestCancellation(),但它并没有停止动画。 我也用了cancel(mayInterruptIfRunning),也没停

所以,我不能在不等待前一个动画停止的情况下链接 2 个动画(我的 WS 调用 = 最多 3-4 秒)。

有什么想法吗?

示例:

private var animate: Future<Animate>? = null

fun animate(animRes: Int) {
        animate?.requestCancellation()

        AnimationBuilder
                .with(qiContext)
                .withResources(animRes)
                .buildAsync()
                .thenConsume { futureAnimation ->
                    animate = AnimateBuilder
                            .with(qiContext)
                            .withAnimation(futureAnimation?.value)
                            .buildAsync()
                    animate?.andThenConsume {
                       it.async().run()
                    }
                }
}

谢谢, 巴斯蒂安

终于找到我的问题了。 实际上,我在创建这样的对象时存储了 animate 引用:

animate = AnimateBuilder
                  .with(qiContext)
                  .withAnimation(futureAnimation?.value)
                  .buildAsync()

所以,我打印了我的对象(就像我的回调中使用的每个 Future),然后我发现在使用我的动画 andThenConsume 回调中的 it.async().run() 之后,returns 运行 动画参考,与我之前创建的不同(正在考虑重用相同的旧参考)。

所以,这里是我的新(工作)代码:

fun animate(animRes: Int) {
        //Cancelling possible running animation to display a new one
        animate?.requestCancellation()

        AnimationBuilder
                .with(qiContext)
                .withResources(animRes)
                .buildAsync()
                .thenConsume { futureAnimation ->
                    AnimateBuilder
                            .with(qiContext)
                            .withAnimation(futureAnimation?.value)
                            .buildAsync()
                            .andThenConsume {
                                animate = it.async().run() as Future<Animate>
                            }
                }
}