补间时播放声音
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);
我 运行 在尝试实现我的想法时遇到了问题。
我有一个图像,我对其 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);