OSDN Git Service

fixed issue 1203, pingpong keframe indexing was off
authorMario Zechner <contact@badlogicgames.com>
Sat, 26 Jan 2013 12:48:16 +0000 (13:48 +0100)
committerMario Zechner <contact@badlogicgames.com>
Sat, 26 Jan 2013 12:48:16 +0000 (13:48 +0100)
gdx/src/com/badlogic/gdx/graphics/g2d/Animation.java

index 846c5a1..b679557 100644 (file)
@@ -124,6 +124,9 @@ public class Animation {
        public int getKeyFrameIndex (float stateTime) {\r
                int frameNumber = (int)(stateTime / frameDuration);\r
 \r
+               if(keyFrames.length == 1)\r
+         return 0;\r
+               \r
                switch (playMode) {\r
                case NORMAL:\r
                        frameNumber = Math.min(keyFrames.length - 1, frameNumber);\r
@@ -132,9 +135,10 @@ public class Animation {
                        frameNumber = frameNumber % keyFrames.length;\r
                        break;\r
                case LOOP_PINGPONG:\r
-                       frameNumber = frameNumber % (keyFrames.length * 2);\r
-                       if (frameNumber >= keyFrames.length) frameNumber = keyFrames.length - 1 - (frameNumber - keyFrames.length);\r
-                       break;\r
+                       frameNumber = frameNumber % ((keyFrames.length * 2) - 2);\r
+         if (frameNumber >= keyFrames.length)\r
+            frameNumber = keyFrames.length - 2 - (frameNumber - keyFrames.length);\r
+         break;\r
                case LOOP_RANDOM:\r
                        frameNumber = MathUtils.random(keyFrames.length - 1);\r
                        break;\r