All Versions
Latest Version
Avg Release Cycle
104 days
Latest Release
874 days ago

Changelog History
Page 3

  • v4.0.1 Changes

    March 19, 2016
    • ๐Ÿ›  FlxDebugger: [HTML5] fixed version text color (#1727)
    • ๐Ÿ›  FlxFlicker / LabelValuePair: fixed DCE issues (#1757)
    • ๐Ÿ›  FlxMouse: fixed useSystemCursor = true not always working with native cursor API
    • ๐Ÿ›  FlxDebugger mouse handling fixes (#1775):
      • fixed FlxMouse's visible and useSystemCursor not being restored properly
      • fixed cursor disappearing after losing Console focus with native cursor API
      • fixed mouse focus area of windows being too big
    • ๐Ÿ›  FlxAnimationController: fixed finishCallback firing multiple times in one frame (#1781)
    • ๐Ÿ›  FlxPreloader: [HTML5] fixed preloader not showing up (#1750)
    • FlxStringUtil.formatMoney():
      • fixed formatting for Amount < 0 (#1754)
      • fixed formatting for negative amounts
      • [HTML5] fixed formatting for amounts > Int32
    • ๐Ÿ›  Debugger Stats window: fixed paused time being taken into account for average FPS
  • v4.0.0 Changes

    February 16, 2016


    • ๐Ÿ”„ Changed static inline vars to enums: (#998)
      • FlxCamera follow styles
      • FlxCamera shake modes
      • FlxText border styles
      • FlxTilemap auto-tiling options
      • FlxBar fill directions
      • FlxG.html5 browser types
    • ๐Ÿšš Moved FlxMath, FlxPoint, FlxVector, FlxRect, FlxAngle, FlxVelocity and FlxRandom to flixel.math
    • ๐Ÿšš Moved "typed" classes: (#1100)
      • FlxTypedGroup into FlxGroup.hx
      • FlxTypedSpriteGroup into FlxSpriteGroup.hx
      • FlxTypedEmitter into FlxEmitter.hx
      • FlxTypedButton into FlxButton.hx
    • โšก๏ธ The signature of update() functions was changed to update(elapsed:Float). The elapsed argument should be used instead of FlxG.elapsed. (#1188)


    • โž• Added flixel.FlxStrip which supports rendering via drawTriangles()
    • Added an experimental rendering method using drawTriangles() (enabled by defining FLX_RENDER_TRIANGLE, requires FlxG.renderTile to be true).
    • The tile renderer now uses Tilesheet.TILE_RECT instead of addTileRect()
    • Renderers are now distinguished by FlxG.renderMethod (FlxG.renderBlit / FlxG.renderTile for easy access) instead of defines (FLX_RENDER_BLIT / FLX_RENDER_TILE). This allows for a fallback to software rendering on certain targets if hardware rendering is not available. (#1668)


    • โž• added pixelPerfectRender as a global setting for sprites and tilemaps (#1060)
    • 0๏ธโƒฃ pixelPerfectRender now defaults to false with FlxG.renderTile (#1065)
    • bounds -> minScrollX, maxScrollX, minScrollY and maxScrollY (null means unbounded) (#1070)
    • setBounds() -> setScrollBoundsRect() (#1070)
    • โž• added setScrollBounds()
    • โž• added targetOffset (#1056)
    • โž• added scrollRect sprite which crops the camera's view when the camera is scaled
    • camera now scales from its center, not its top left corner
    • โšก๏ธ followLerp is now a range taking values from 0 to (60 / FlxG.updateFramerate) - the closer to zero the more lerp! (#1220)
    • โž• added snapToTarget() (#1477)
    • ๐Ÿ›  fade(): fixed FadeIn == true not working in a fade out callback (#1666)
    • ๐Ÿšš follow(): removed the Offset argument (#1056)


    • ๐Ÿ›  debugger: fixed a crash when calling addTrackerProfile() before track()
    • ๐Ÿšฆ signals:
      • split gameReset into pre/post signals
      • added preStateCreate (#1557)
    • 0๏ธโƒฃ android: preventDefaultBackAction has been replaced by preventDefaultKeys
    • inputs: added resetOnStateSwitch
    • โž• added FlxG.addPostProcess() / removePostProcess()
    • โž• added resizeWindow()
    • โž• Added filtersEnabled and setFilters() to FlxCamera and FlxGame (#1635)
    • ๐Ÿ— version now includes the commit SHA via a build macro


    • โž• added getPosition() and getHitbox()
    • โšก๏ธ split some of separate()'s functionality into updateTouchingFlags(), allowing touching to be used without any separate calls (#1555)
    • โž• added path (#1712)


    • โž• added graphicLoaded()
    • getScreenXY() -> getScreenPosition()
    • โœ‚ removed the NewSprite argument from clone()
    • โž• added clipRect
    • frames -> numFrames
    • โž• added frames which reflects the sprite's current frames collection
    • โœ‚ removed loadGraphicFromTexture() and loadRotatedGraphicFromTexture()
    • cachedGraphics -> graphic
    • โž• added setFrames() which allows you to save animations which already exists in the sprite
    • colorTransform is always instantiated
    • โž• added loadRotatedFrame() which allows you to generate prerotated image from given frame and load it
    • โž• added error message then trying to get pixels and graphic is null
    • drawFrame() is no longer inline so it can be redefined in subclasses.
    • set_angle(): always change the prerotated animation angle to prevent delays
    • โœ‚ removed resetFrameBitmaps() method, since frames don't store bitmaps anymore. Set dirty to true to force the frame graphic to be regenerated in the next render loop.
    • โž• added useFramePixels
    • setColorTransform()'s offset arguments now work with drawTiles rendering on OpenFL 3.6.0+ (#1705)
    • โšก๏ธ getFlxFrameBitmapData() -> updateFramePixels() (#1710)


    • onFocus() and onFocusLost() no longer require FlxG.autoPause to be false
    • โž• added switchTo() (#1676)


    • FlxAnimation:
      • added reversed var which allows you to play animation backwards
      • second argument of play() method is Reversed now
      • added flipX and flipY (#1670)
    • FlxAnimationController:
      • curAnim does also return animations that have finished now
      • removed get()
      • callback: fixed old frameIndex value being passed instead of the current one
      • add() now makes a copy of the Frames array before calling splice() on it
      • fixed finished not being true during the last animation frame in the callback
      • added Reversed argument in play() method, which allows you to set animation's playback direction


    • FlxEmitter:
      • at() -> focusOn()
      • on -> emitting
      • emitters and particles now use FlxColor instead of separate red, green, and blue values
      • removed FlxEmitterExt, FlxEmitter now has two launch modes: CIRCLE (the new default) and SQUARE (#1174)
      • removed xPosition, yPosition, life, bounce, and various other properties, and property setting convenience functions (see below) (#1174)
      • a variety of values can now be set with much greater control, via lifespan.set(), scale.set(), velocity.set() and so on (#1174)
      • simplified start() parameters (#1174)
      • added angularDrag and angularAcceleration (#1246)
    • FlxParticle: (#1174)
      • maxLifespan -> lifespan, lifespan -> age, percent indicates (age / lifespan)
      • age counts up (as opposed to lifespan, which counted down)
      • range properties (velocityRange, alphaRange) which determine particle behavior after launch
      • "active" flags (,, etc) which FlxEmitter uses to control particle behavior

    • FlxGraphic:
      • renamed from CachedGraphics and moved to
      • added defaultPersist (#1241)
      • added fromAssetKey(), fromClass() and fromBitmapData()
      • bitmap is now settable
    • FlxAtlas:
      • moved to
      • added addNodeWithSpacings()
      • added minWidth, maxWidth, minHeight and maxHeight (the size starts at min and grows up until max as images are added)
      • added powerOfTwo (forces atlas size to a power of two)
      • added allowRotation (indicates whether added images may be rotated to save space)
    • FlxNode:
      • moved to
      • added getTileFrames() and getImageFrame()
    • Introduced a new frames collections concept replacing regions:
      • added FlxImageFrame frames collection which contains single frame
      • added FlxTileFrames frames collection which contains frames for spritesheet, which can be generated from image region or frame (including rotated and trimmed frames)
      • added FlxAtlasFrames frames collection instead of various texture atlas loaders (like SparrowData and TexturePackerData). It contains various static methods for parsing atlas files
      • added FlxFilterFrames frames collection instead of FlxSpriteFilter (see filters demo)
    • ๐Ÿ‘ Rewrote PxBitmapFont and renamed it to FlxBitmapFont. It supports AngelCode, XNA and Monospace bitmap fonts now.
    • FlxFrame:
      • doesn't store the frame's bitmapatas anymore, so getBitmap() and other bitmap methods have been removed
      • added paint() and paintFlipped() methods instead. This solution requires much less memory, but will be a bit slower.
      • added flipX and flipY (#1591)

    • FlxTypedGroup:
      • added a recurse argument to the forEach() functions
      • removed callAll() and setAll() - use forEach() instead (#1086)
      • replaced the parameter array in recycle() with an optional factory method (#1191)
      • revive() now calls revive() on all members of a group as well (#1243)
      • added insert() (#1671)
    • FlxTypedSpriteGroup: added iterator()


    • FlxSwipe: duration now uses seconds instead of milliseconds (#1272)
    • FlxMouse and FlxTouch now extend a new common base class FlxPointer instead of FlxPoint (#1099)
      • adds overlaps() to FlxMouse


    • FlxGamepadManager:
      • better handling of disconnecting and reconnecting gamepads. getByID() can now return null.
      • anyButton() now has a state argument
      • globalDeadZone can now be 0
      • globalDeadZone now overshadows instead of overriding the gamepad's deadzone values
    • FlxGamepad:
      • refactored gamepads to include mappings, removing the need to write separate logic for each gamepad type (#1502):
      • each gamepad now has a model, mapping and name
      • moved the ID classes to
      • all IDs are now mapped to a value in FlxGamepadInputID
      • the previous "raw" gamepad IDs are now available via separate functions
      • added pressed, justPressed, justReleased and analog
      • removed the dpad properties, they are now mapped to buttons
      • added a connected flag
      • added deadZoneMode, circular deadzones are now supported (#1177)
      • anyButton() now has a state argument
      • added support for WiiMote (#1563) and PS Vita (#1714) controllers


    • FlxKeyboard:
      • added preventDefaultKeys for HTML5
      • added an abstract enum for key names (FlxG.keys.anyPressed([A, LEFT]) is now possible)
      • the any-functions now take an Array of FlxKeys instead of Array of Strings (string names are still supported)
      • removed FlxKey.NUMPADSLASH (SLASH has the same keycode)


    • ๐Ÿ‘€ FlxMouseEventManager:
      • moved from flixel.plugin.MouseEventManager to flixel.input.mouse.FlxMouseEventManager
      • added removeAll() (#1141)
      • fixed inaccurate pixel-perfect sprite overlap checks (#1075)
      • now supports all mouse buttons (mouseButtons argument in add() / setObjectMouseButtons())


    • FlxAngle:
      • changed rotatePoint() to not invert the y-axis anymore and rotate clockwise (consistent with FlxSprite#angle)
      • rotatePoint() -> FlxPoint#rotate() (#1143)
      • getAngle() -> FlxPoint#angleBetween() (#1143)
      • added angleFromFacing() (#1193)
      • fixed wrapAngle() (#1610)
      • removed angleLimit() (#1618)
    • FlxMath:
      • bound() and inBounds() now accept null as values, meaning "unbounded in that direction" (#1070)
      • wrapValue() -> wrap(), replaced the amount argument with a lower bound
      • changed MIN_VALUE and MAX_VALUE to MIN_VALUE_FLOAT and MAX_VALUE_FLOAT, added MAX_VALUE_INT (#1148)
      • added sinh() (#1309)
      • added fastSin() and fastCos() (#1534)
      • optimized isEven() and isOdd()
      • added remapToRange() (#1633)
      • getDistance() -> FlxPoint#distanceTo() (#1716)
    • FlxPoint:
      • inFlxRect() -> inRect
    • FlxRandom:
      • FlxRandom functions are now member functions, call FlxG.random instead of FlxRandom (#1201)
      • exposed currentSeed as an external representation of internalSeed (#1138)
      • removed intRanged() and floatRanged(), int() and float() now provide optional ranges (#1138)
      • removed weightedGetObject(), getObject() now has an optional weights parameter (#1148)
      • removed colorExt(), try using FlxColor to get finer control over randomly-generated colors (#1158)
      • updated random number generation equation to avoid inconsistent results across platforms; may break recordings made in 3.x! (#1148)
      • can now create an instance of FlxRandom to create deterministic pseudorandom numbers independently of HaxeFlixel core functions (e.g. particle emitters)
      • chanceRoll() -> bool()
      • added floatNormal() (#1251)
    • FlxRect:
      • added weak(), putWeak(), ceil() and floor()
      • containsFlxPoint() -> containsPoint()
    • FlxVelocity:
      • accelerateTowards*()-functions now only take a single maxSpeed argument (instead of x and y)


    • ๐Ÿฑ FlxAssets:
      • cacheSounds() -> FlxG.sound.cacheAll() (#1097)
      • OpenFL live asset reloading is now supported (native targets)
    • FlxSound
      • can now be used even if FLX_NO_SOUND_SYSTEM is enabled (#1199)
      • looped is now public
      • added pitch (#1465)
      • added FlxSoundGroup (#1316)


    • Console:
      • refactored the console to be powered by hscript (#1637)
      • added auto-completion
      • fixed focus on native targets


    • BaseScaleMode: added horizontalAlign and verticalAlign
    • RatioScaleMode#new(): added a fillScreen option
    • The FlxCamera sprite is now scaled (instead of FlxGame)


    • Rewrote FlxBitmapTextField and renamed it to FlxBitmapText
    • FlxText:
      • added an abstract enum for alignment (text.alignment = CENTER; is now possible)
      • font now supports font assets not embedded via openfl.Assets (i.e. @:font)
      • font = null; now resets it to the default font
      • fixed an issue where the value returned by get_font() wouldn't be the same as the one passed into set_font()
      • added applyMarkup() (#1229)
      • fixed issues with borderStyle and FlxTextFormat on native
      • added stampOnAtlas() method, which stamps text graphic on provided atlas and loads result node's graphic into this text object
      • retrieving text dimensions (width and height) can now trigger text graphic regeneration (if any changes led to a dimensions change) to report the correct values
      • borderColor now supports alpha values / ARBG colors
      • fixed setFormat() resetting alignment (#1629)
    • ๐Ÿšš Moved FlxTextField to flixel-addons


    • FlxBaseTilemap: added setRect() method which allows you to set a rectangular region of tiles to the provided index
    • FlxTile: added frame variable which holds tile's "graphic"
    • FlxTileblock:
      • added setTile() and tileSprite (#1300)
      • added loadFrames() method which allows you to use frames collection as a source of graphic
    • FlxTilemap:
      • separated rendering and logic, adding FlxBaseTilemap (#1101)
      • added getTileIndexByCoords() and getTileCoordsByIndex()
      • fixed a bug in overlapsAt()
      • loadMap() now treats tile indices with negative values in the map data as 0 (#1166)
      • added blend, alpha and color
      • added frames property, so you can change tilemap's graphic without reloading map
      • loadMap() accepts FlxGraphic, String, FlxTileFrames or BitmapData as TileGraphic now
      • loadMap() has been split into loadMapFromCSV() and loadMapFromArray() (#1292)
      • added loadMapFrom2DArray() (#1292)
      • added offset property (#1444)
      • allowCollisions now sets the allowCollisions property of each tile
      • fixed ray() not detecting a collision with perfectly diagonal start and end points (#1617)
      • findPath(): replaced WideDiagonal argument with DiagonalPolicy (#1659)


    • FlxTween
      • complete callback parameter in options is now called onComplete. Its type, CompleteCallback, is now called TweenCallback. (#1273)
      • added onStart and onUpdate callback parameters in options (#1273)
      • fixed active = false; not doing anything during onComplete() of LOOPING or PINGPONG tweens
      • angle tween sets sprite's angle on start now
      • added then() and wait() for chaining (#1614)
      • made start() public (#1692)
      • active is now only true when in progress
    • Motion tweens:
      • the original FlxObject#immovable value is now restored after completion

    ๐Ÿ’ป flixel.ui:

    • FlxAnalog and FlxVirtualPad now have their own atlas to reduce draw calls
    • FlxTypedButton:
      • now implements IFlxInput, adding pressed, justPressed, released and justReleased
      • now uses animations for statuses instead of setting frameIndex directly for more flexibility (removes allowHighlightOnMobile, adds statusAnimations)
      • disabling the highlight frame is now tied to #if FLX_NO_MOUSE instead of #if mobile
      • labelAlphas[FlxButton.HIGHLIGHT] is now 1 for FLX_NO_MOUSE
      • set_label() now updates the label position
      • added maxInputMovement
      • added mouseButtons to control which mouse buttons can trigger the button
      • label is no longer initialized if the text passed to new() is null
      • added stampOnAtlas() for draw call optimization
    • โž• Added FlxSpriteButton


    • FlxArrayUtil:
      • removed indexOf()
      • moved randomness-related to FlxRandom (#1138)
    • FlxBitmapDataUtil:
      • renamed from FlxBitmapUtil (#1118)
      • added replaceColor() (used by FlxSprite#replaceColor())
      • added addSpacing()
      • added generateRotations()
    • FlxColor:
      • FlxColor is now an abstract, interchangeable with Int - the FlxColorUtil functions have been merged into it (#1027)
      • the color presets have been reduced to a smaller, more useful selection (#1117)
    • FlxPath:
      • the original FlxObject#immovable value is now restored after completion
      • active is now only true when in progress
      • fixed velocity being set even if the object position matches the current node
      • exposed nodeIndex as a read-only property
      • removed the Object argument from start(), now the path has to be assigned to FlxObject#path (#1712)
    • FlxPool:
      • improved pooling performance (#1189)
    • ๐Ÿšฆ FlxSignal:
      • fixed a bug that occurred when calling remove() during a dispatch (#1420)
    • FlxSpriteUtil:
      • drawLine(): default settings for lineStyle are now thickness 1 and color white
      • fadeIn() and fadeOut() now tween alpha instead of color
      • added drawCurve() (#1263)
      • removed FillStyle, the same functionality is now covered by FillColor
      • moved screenCenter() to FlxObject and changed the the arguments from two booleans to the FlxAxes enum (#1541)
    • FlxTimer:
      • complete -> onComplete (#1275)
      • active is now only true when in progress


    • โž• Added an initialization macro that aborts compilation with helpful errors when:
      • targeting older SWF versions with invalid defines
      • using an unsupported Haxe version
    • ๐Ÿฑ Flixel sound assets are now being embedded via embed="true"
  • v3.3.12 Changes

    December 15, 2015
    • ๐Ÿ›  Fix compilation with OpenFL 3.5 / Lime 2.8
  • v3.3.11 Changes

    July 08, 2015
    • ๐Ÿ›  Fix compilation with OpenFL next
    • ๐Ÿฑ FlxAssets.getFileReferences():
      • now ignores invisible files (#1280)
      • fixed compiler error with iOS builds (#1276)
  • v3.3.10 Changes

    July 03, 2015
    • ๐Ÿ›  Fix HTML5 compilation with OpenFL 3.1.1 / Lime 2.4.5
  • v3.3.9 Changes

    June 30, 2015
    • ๐Ÿ— HTML5 builds no longer default to using openfl-bitfive over OpenFL's backend
    • FlxTilemap:
      • fixed a collision bug near the edge of the tilemap (#1546)
      • fixed loadMap() with trailing whitespace in CSV files (#1550)
    • ๐Ÿ›  FlxTextField: fixed a crash when calling the constructor with Text == null
    • โšก๏ธ FlxGamepadManager: fixed lastActive only updating when a new gamepad connects
    • 0๏ธโƒฃ FlxText: fixed the default font not working on Android due to an OpenFL bug (#1399)
    • FlxVector:
      • fixed behaviour of set_length() for (0, 0) vectors (#1144)
      • fixed subtractNew() (#1231)
    • FlxTimer: timers with a time of 0 can now be started
    • ๐Ÿšฆ FlxSignal: fixed addOnce() not working on neko (#1223)
    • ๐Ÿ›  FlxSave: fixed data still having the deleted properties after erase() (#1302)
    • ๐Ÿ›  FlxPool: fixed a bug with point / rect pooling that could lead to them being recycled when they shouldn't be
  • v3.3.8 Changes

    March 28, 2015
    • ๐Ÿ‘‰ Use lime legacy with OpenFL 3+
  • v3.3.7 Changes

    March 26, 2015
    • Compatibility fix for Haxe 3.2.0 (recursive @:generic function)
  • v3.3.6 Changes

    November 20, 2014
    • Compatibility fix for OpenFL 2.1.6
  • v3.3.5 Changes

    July 16, 2014
    • FlxTilemap:
      • fixed pixelPerfectRender not being respected with FLX_RENDER_TILE
      • fixed a crash when trying to create a single-column tilemap
    • 0๏ธโƒฃ FlxCamera: fixed defaultCameras not being reset on state switches
    • ๐Ÿ›  FlxPoint#putWeak(): fixed an issue which could lead to a single point being allocated more than once when weak() is used
    • ๐Ÿ›  FlxVector: fixed radiansBetween() / degreesBetween()
    • โšก๏ธ FlxTypedSpriteGroup: fixed update() order leading to collision issues with members
    • ๐Ÿ›  FlxTypedEmitter: fixed type parameter not being respected (T was always FlxSprite)
    • ๐Ÿฑ FlxAssets#getFileReferences(): fixed the filterExtensions parameter
    • FlxBitmapTextField:
      • fixed issue with width increasing when the text is updated
      • fixed text disappearing after state switches on HTML5
    • ๐Ÿšš FlxAnalog: changed the default value for scrollFactor to (0, 0) and for moves to false
    • FlxGamepad:
      • fixed a bug that would prevent buttons from being updated
      • anyPressed() now also works when the button status is justPressed
    • ๐Ÿ›  FlxTween: fixed a bug when tweening the same field with several tweens + startDelay
    • FlxSubState:
      • fixed calling close() within create()
      • fixed openSubState() not working when close() is called afterwards on the current substate on the same frame