【问题标题】:Playing sound while tweening补间时播放声音
【发布时间】:2015-07-23 15:30:15
【问题描述】:

我在尝试实施我的想法时遇到了问题。

我有一张图像,我在其 Alpha 层之间进行补间,将其淡入,一秒钟后将其淡出。在这里,我希望在完全淡入的时候玩一个马里奥硬币。

我尝试为此实现不同的回调,但无论哪种方式,我都会在补间之前或之后播放声音。

代码sn-p:

Tween.set(splash, SpriteAccessor.ALPHA).target(0).start(tweenManager);
Tween.to(splash, SpriteAccessor.ALPHA, 2).target(1).repeatYoyo(1, 0.5f).setCallback(new TweenCallback() {
    @Override
    public void onEvent(int type, BaseTween<?> source) {
        ((Game) Gdx.app.getApplicationListener()).setScreen(new MainMenu());
    }
}).start(tweenManager);

在做:

Tween.set(splash, SpriteAccessor.ALPHA).target(0).start(tweenManager);
Tween.to(splash, SpriteAccessor.ALPHA, 2).target(1).repeatYoyo(1, 0.5f).setCallback(new TweenCallback() {
    @Override
    public void onEvent(int type, BaseTween<?> source) {
        SoundManager.PlayIntro();
        ((Game) Gdx.app.getApplicationListener()).setScreen(new MainMenu());
    }
}).start(tweenManager);

在补间之后播放声音。

还有:

Tween.set(splash, SpriteAccessor.ALPHA).target(0).start(tweenManager)
    .setCallback(new TweenCallback() {
            @Override
            public void onEvent(int type, BaseTween<?> source) {
                SoundManager.PlayIntro();
            }
    });

Tween.to(splash, SpriteAccessor.ALPHA, 2).target(1).repeatYoyo(1, 0.5f).setCallback(new TweenCallback() {
    @Override
    public void onEvent(int type, BaseTween<?> source) {
        ((Game) Gdx.app.getApplicationListener()).setScreen(new MainMenu());
    }
}).start(tweenManager);

以前播放过。如何实现我想要的?

【问题讨论】:

    标签: java libgdx tween


    【解决方案1】:

    您可以通过使用补间引擎中的时间轴并创建一个序列来实现这一点,这是我在这些情况下使用最多的。

    这应该适合你:

    Timeline.createSequence().beginSequence()
            .push(Tween.to(splash, SpriteAccessor.ALPHA, 0).target(0))
            .push(Tween.to(splash, SpriteAccessor.ALPHA, 2).target(1).setCallback(new TweenCallback() {
                @Override
                public void onEvent(int arg0, BaseTween<?> arg1) {
                    SoundManager.PlayIntro();
                }
            }))
            .pushPause(0.5f)
            .push(Tween.to(splash, SpriteAccessor.ALPHA, 2f).target(0)).setCallback(new TweenCallback() {
                @Override
                public void onEvent(int arg0, BaseTween<?> arg1) {
                    ((Game) Gdx.app.getApplicationListener()).setScreen(new MainMenu());
                }
            })
    .start(tweenManager);
    

    【讨论】:

    • 太棒了!不知道时间轴功能。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多