在尝试实现我的想法时,我遇到了一个问题。
我有一个图像,我在它的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);
之前播放。我如何实现我想要的?
答案 0 :(得分:3)
您可以通过使用补间引擎中的时间轴并创建序列来实现此目的,这是我对这些案例使用最多的内容。
这应该适合你:
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);