簡體   English   中英

補間時播放聲音

[英]Playing sound while tweening

在嘗試實現我的想法時,我遇到了一個問題。

我有一個圖像,我在alpha層之間,淡入它,一秒鍾后淡出它。 在這里,我希望在完全淡入的時候玩馬里奧硬幣。

我已嘗試為此實現不同的回調,但無論哪種方式,我都會在補間之前或補間之后播放聲音。

代碼段:

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);

之前播放。 我如何實現我想要的?

您可以通過使用補間引擎中的時間軸並創建序列來實現此目的,這是我對這些情況最常用的內容。

這應該適合你:

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM