Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TweenAccessor for music.class in LibGDX

Tags:

java

libgdx

I've been wondering: is it possible to use Universal Tween Engine in LibGDX to - for example - change the volume of a song? I wrote my own MusicAccessor with code similar to my SpriteAccessor, which actually works for Sprite.class, but when it comes to music objects - it always gets the same error:

java.lang.RuntimeException: No TweenAccessor was found for the target

The thing is, I DO register my accessor by: Tween.registerAccessor(Music.class,new MusicAccessor()); I'm quite sure it's actually being registered, as System.out.println(Tween.getRegisteredAccessor(Music.class)); prints: the.name.of.my.packages.MusicAccessor@14bb523. Honestly, I'm stuck.

The music file itself is in .mp3 format and I load it by an asset manager.

So, my questions are: why the Tween Engine cannot correctly recognise the class of my music object? Is there a way to make it work or am I stuck with regular timers to change the volume over time? Would changing the format or loading the music file in a different way help?

like image 828
Czyzby Avatar asked Jan 07 '14 18:01

Czyzby


1 Answers

I personally haven't used Tween Engine myself yet, but I think it might be because Music is actually just an interface.

There are several implementations for the different backends and different file formats. For example AndroidMusic, GwtMusic, and three more implementations of OpenALMusic (they are all called Music and are located in the com.badlogic.gdx.backends.openal.mp3/ogg/wav packages). You could either register them all with your accessor, or you can use Tween.cast() which I found in the code, but not in the official JavaDoc of the tween engine. It might be only in the latest version.

like image 105
noone Avatar answered Oct 11 '22 09:10

noone