flixel
flixel copied to clipboard
animation.play() with Reversed==true not working as expected
- Haxe version: 3.4.2
- Flixel version: a5cb05d
- OpenFL version: 3.6.1
- Lime version: 2.9.1
- Affected targets: flash, neko
Code snippet reproducing the issue:
package;
import flixel.FlxState;
import flixel.FlxSprite;
import flixel.util.FlxColor;
class PlayState extends FlxState
{
override public function create():Void
{
var playerSprite = new FlxSprite();
playerSprite.makeGraphic(100, 100, FlxColor.GREEN);
add(playerSprite);
playerSprite.animation.add("test", [0, 0, 0, 0], 6, false);
playerSprite.animation.callback = function(name, number, index) {
trace("callback", playerSprite.animation.finished, name, number, index);
};
playerSprite.animation.play("test", true, true);
}
}
Observed behavior:
On Flash:
PlayState.hx:45: callback,false,test,3,0
PlayState.hx:45: callback,false,test,2,0
PlayState.hx:45: callback,false,test,1,0
PlayState.hx:45: callback,false,test,0,0
PlayState.hx:45: callback,false,test,-1,0
PlayState.hx:45: callback,false,test,-2,0
PlayState.hx:45: callback,false,test,-3,0
PlayState.hx:45: callback,false,test,-4,0
PlayState.hx:45: callback,false,test,-5,0
PlayState.hx:45: callback,false,test,-6,0
PlayState.hx:45: callback,false,test,-7,0
...
On neko:
PlayState.hx:45: callback,false,test,3,0
PlayState.hx:45: callback,false,test,2,0
PlayState.hx:45: callback,false,test,1,0
PlayState.hx:45: callback,false,test,0,0
Invalid operation (%)
Called from flixel.animation.FlxAnimationController::set_frameIndex line 725
Called from flixel.animation.FlxBaseAnimation::set_curIndex line 32
Called from flixel.animation.FlxAnimation::set_curFrame line 243
Called from flixel.animation.FlxAnimation::update line 197
Called from flixel.animation.FlxAnimationController::update line 87
Called from flixel.FlxSprite::updateAnimation line 629
Called from flixel.FlxSprite::update line 621
Called from flixel.group.FlxTypedGroup::update line 141
Called from PlayState::update line 59
Called from flixel.FlxState::tryUpdate line 172
Called from flixel.FlxGame::update line 735
Called from flixel.FlxGame::step line 665
Called from flixel.FlxGame::onEnterFrame line 538
Called from openfl._legacy.events.EventDispatcher::dispatchEvent line 98
Called from openfl._legacy.display.DisplayObject::__dispatchEvent line 182
Called from openfl._legacy.display.DisplayObject::__broadcast line 161
Called from openfl._legacy.display.DisplayObjectContainer::__broadcast line 286
Called from openfl._legacy.display.Stage::__render line 1103
Called from openfl._legacy.display.Stage::__checkRender line 351
Called from openfl._legacy.display.Stage::__pollTimers line 1084
Called from openfl._legacy.display.Stage::__doProcessStageEvent line 430
Expected behavior:
Should be same as when Reversed==false (but with reversed frame order):
PlayState.hx:45: callback,false,test,3,0
PlayState.hx:45: callback,false,test,2,0
PlayState.hx:45: callback,false,test,1,0
PlayState.hx:45: callback,false,test,0,0
PlayState.hx:45: callback,true,test,0,0