facebookarchive / Keyframes

A library for converting Adobe AE shape based animations to a data format and playing it back on Android and iOS devices.
https://facebookincubator.github.io/Keyframes/
Other
5.34k stars 302 forks source link

[Android - Bug] Using a fractional "frame_rate" value causes a NumberFormatException #108

Open camaron-izeni opened 7 years ago

camaron-izeni commented 7 years ago

I am trying to load a Keyframes asset with a with a frame rate of 29.9700012207031. I got the asset from my teams designers how created it using the After Effects exporter. It seems to be working on iOS, but on Android I get the following exception.

FATAL EXCEPTION: main
    Process: com.owletcare.owletfield, PID: 6464
    java.lang.NumberFormatException: 29.9700012207031
        at android.util.JsonReader.nextInt(JsonReader.java:522)
        at com.facebook.keyframes.deserializers.KFImageDeserializer.readObject(KFImageDeserializer.java:45)
        at com.facebook.keyframes.deserializers.KFImageDeserializer.deserialize(KFImageDeserializer.java:35)
        at com.owletcare.owlet.controls.KeyframesView.loadAsset(KeyframesView.java:66)
        at com.owletcare.owlet.controls.KeyframesView.loadAsset(KeyframesView.java:59)
        at com.owletcare.owlet.fragments.TestKeyframesFragment.onViewCreated(TestKeyframesFragment.java:33)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1132)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1295)
        at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801)
        at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1682)
        at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:541)
        at android.os.Handler.handleCallback(Handler.java:733)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5001)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
        at dalvik.system.NativeStart.main(Native Method)
leeyc09 commented 7 years ago

When you create a After Effect project with default settings. The frame rate is displayed as 30, but it is actually 29.97. so, Manually change the frame rate. thanks

(NTSC color encoding is used with the System M television signal, which consists of  30⁄1.001 (approximately 29.97) interlaced frames of video per second by wiki) https://en.wikipedia.org/wiki/NTSC