Hey, everyone!
Grab the latest feature releases for OpenFL, Lime, and SWF from Haxelib.
haxelib install lime 8.3.0
haxelib install openfl 9.5.0
haxelib install swf 3.4.0
Let’s take a moment to highlight a few selected improvements, but you can also read through the full changelog at the end.
- In OpenFL, the
scale9Gridproperty now supports adjusting vectors in theGraphicsclass, which greatly improves compatibility with Flash’s behavior.- Check out this
scale9Griddevlog by Josh Tynjala, if you’re interested in a deeper dive on the technical details.
- Check out this
- The
Screenclass in OpenFL and theDisplayclass in Lime now each provide asafeAreaproperty, which you may use to check if the current device has notches or cutouts (supported on iOS, Android, and macOS). - The
Stageclass in OpenFL and theApplicationclass in Lime now provide a number of new APIs to related to device and stage orientation, including events that you may listen to, such asStageOrientationEvent.ORIENTATION_CHANGEin OpenFL. - A new
rumble()method was added to theGamepadclass in Lime. TextFormatin OpenFL and theFontclass in Lime now supportstrikethroughformatting.- OpenFL’s Stage 3D now supports several new AGAL2 opcodes.
- We upgraded the version of HashLink binaries bundled with Lime to 1.14.
- To meet current Google Play requirements for Android, the default target SDK version has been increased 35, and Lime’s binaries are built with NDK 28 to support 16KB native library alignment.
Changelogs
OpenFL 9.5.0 Changelog
- Added new, more accurate
scale9Gridimplementation forGraphics. Set the newopenfl_legacy_scale9griddefine to restore legacy behavior. - Added
orientation,deviceOrientation,supportedOrientations,supportsOrientationChangeandautoOrientsproperties,setOrientation()method, andStageOrientationEvent.ORIENTATION_CHANGEevent toStage. You must check the value ofsupportsOrientationChangeto determine if they may be used on the current target. - Added
safeAreaproperty toScreento get the region of the screen without cutouts or rounded corners. - Added
BevelFilterimplementation. - Added
passwordCharproperty toTextFieldto allow customizing the password mask character. - Added
strikethroughproperty toTextFormatto allow rendering a line striking out the text. - Added
getFileBytes(),getFileText(),saveBytes(), andsaveText()static helper methods toFileclass. - Added implementation of AGAL2 opcodes
ddx,ddy,ife,ine,ifg,ifl,els, andeifto Stage 3D. - Added
IDisplayObjectLoaderinterface for loading customopenfl.display.Loadercontent. - Added
LARGE_HXSFandLARGE_JSONtoObjectEncodingto support reading and writing larger objects withByteArray. - Added support for rendering more than 16384 tiles in
Tilemap. - Added
Event.CLOSINGevent toNativeWindow, which may be cancelled. - Added readable
typeproperty toNativeWindow, but it cannot yet be customized inNativeWindowInitOptions. - Added static
ofValues()helper function toVectoras an alternative toofArray()that accepts a...restargument instead of an array. - Added support for
drawEllipse(),drawCircle(), anddrawRoundRect()with basic fills (but no strokes) whenGraphicsis forced to be rendered in hardware. - Added bitmap and shader fills when using
drawRect()andGraphicsis forced to be rendered in hardware. - Added solid color fills when using
drawTriangles()anddrawQuads()andGraphicsis forced to be rendered in hardware. - Added setter for
urlproperty onFileclass. - Added
...restargument to thepush()method ofVectorwhen the Haxe version is 4.2 or newer. - Added internal
clippingLayerproperty toDisplayObjectfor use with SWF library to support shared masks. - Added
metaDataproperty toDisplayObjectfor potential future use by SWF library. - Added support for externalizable traits in AMF
ByteArraydata. - Added support for vectors in AMF
ByteArraydata. - Fixed missing final
ProgressEvent.PROGRESSbeforeEvent.COMPLETEonSoundload. - Fixed missing detection of new mouse target after mouse events or transformation, including dispatch of appropriate over/out events.
- Fixed values of
setSelection()getting lost while dragging selection inTextFieldwhen it has not scrolled. - Fixed default caret and selection indices on
TextFieldto be0. - Fixed missing exceptions when calling
getLineText()andgetLineOffset()with negative line numbers. - Fixed
openfl.utils.Objectincorrectly returning a function unbound tothiswhen resolving with member access on HTML5 target. - Fixed passing
nullforuvtDataparameter when callingdrawTriangles()onGraphics. - Fixed gradient fill not getting cleared when forcing hardware rendering of
Graphics. - Fixed incorrect
alignbehavior onStagewhenscaleModeisNO_BORDERorSHOW_ALL. - Fixed
BitmapDatawithdisposeImage()recreating shaders too frequently to improve performance. - Fixed
DisplayObjectfailing to dispose some of itscacheAsBitmapinternalBitmapDataobjects to improve memory usage. - Fixed
Graphicsrendering not clearing an internal flag in some situations, leading to rendering every frame unnecessarily. - Fixed
loaderInfo.widthandloaderInfo.heightnot being initialized with the dimensions of the first window. - Fixed
opaqueBackgroundonDisplayObjectnot rendering correctly. - Fixed
fillRect()onBitmapDatawhen backed by a hardware texture. - Fixed using incorrect underline position and thickness on native targets that use Cairo, when available.
- Fixed compatibility with Haxe 5
IMapinterface onDictionary. - Fixed
durationchangedevent listener type on video todurationchangeinNetStreamon HTML5 target. - Fixed many variables that defaulted to
Dynamicbecause they did not declare a type and were not initialized. - Fixed use of newer
setTransform()overload on HTML5 target to use older overload for wider browser compatibility. - Changed
URLVariablesto remove support for;as a delimiter for better compatibility with Flash, which uses only the&character. - Changed index.html template to use
mobile-web-app-capableinstead of deprecatedapple-mobile-web-app-capable. - Changed
GraphicsandTextFieldon the HTML5 target to reuseBitmapDatato improve performance and to properly dispose texture to improve memory usage. - Changed
TextFieldon the HTML5 target to remove an implicitmoveTo()on its internalGraphics, to improve performance and fix issues after implementingscale9Grid. - Changed
Assets.getMusic()to fall back togetSound()if music isn’t a Vorbis file.
Lime 8.3.0 Changelog
- Added
onDisplayOrientationandonDeviceOrientationevents toApplicationto detect mobile device orientation changes. - Added
safeAreaproperty toDisplayto detect region safe from cutouts and rounded corners. - Added
rumble()method toGamepad. - Added
-jsonflag, which works similarly to the-xmlflag, but outputs types in JSON format. - Added
layoutInDisplayCutoutModeto<config:android>, which may be set todefault,always,never, orshortEdges. - Added support for Windows resource file to set metadata in executable.
- Added
pannerAttr()method toHowlerto configure panner node’s attributes for a sound or group of sounds. - Added
addString()method toHBBufferto properly handle encoding conversions in native code. - Added
screensizeandscreenDPIto<config:air>to customize the mobile simulator. - Added
onUncaughtErrorevent toThreadPoolto allow main thread to handle exceptions indoWork. - Added
strikethroughPositionandstrikethroughThicknesstoFont. - Added separate
lime-openalsoftandlime-mojoaldefines to help detect which library is used. - Added
gradle-propertiesto<config:android>to customize properties for Android Gradle builds. - Fixed missing
hl-verdefine to configure the Haxe compiler to target Lime’s bundled HashLink (unless a customHL_PATHis set). - Fixed display of preload progress for packed asset libraries.
- Fixed mouse move and mouse up event failing to dispatch outside window bounds when mouse button is down.
- Fixed
hardwareattribute not being set on context creation. - Fixed some window properties not getting set properly from attributes on window creation.
- Fixed performance issues in
ThreadPoolby overhauling job scheduling. - Fixed exception on Windows when exiting program by using
SDL_QuitSubSystemin native code. - Fixed separate private variables for
visibleandhiddenthat got out of sync. - Fixed crash on HashLink when passing
NULLdevice to OpenAL bindings. - Fixed many variables that defaulted to
Dynamicbecause they did not declare a type and were not initialized. - Fixed
ThreadPoolthrowing an exception whenApplication.currentisnull. - Fixed old run.n in Haxelib because the CI server did not build it.
- Changed Android rebuild to use NDK r28c for Haxelib to support new 16KB native library aligment requirement.
- Changed Android target SDK version to 35. May require updating to JDK 17 or newer.
- Changed default Android architecture for x86 from x86_32 to x86_64 (can still rebuild x86_32 manually).
- Changed default Android emulator architectures to include ARM64 to better support ARM64 on macOS.
- Changed default Adobe AIR SDK version from 28.0 to 32.0 because 28.0 is no longer available for download from Adobe.
- Changed
minimum-sdk-versionin<config:android>to customize thePLATFORMorPLATFORM_NUMBERvalues used by Android builds. - Changed index.html template to use
mobile-web-app-capableinstead of deprecatedapple-mobile-web-app-capable. - Removed Linux x86_32 binaries from Haxelib (but can still rebuild them manually).
- Removed custom implementation of
haxe.io.Bytes. - Updated bundled HashLink executable version to 1.14.
- Updated SDL submodule to version 2.30.12.
SWF 3.4.0 Changelog
- Added
BevelFilterandConvolutionFiltersupport - Fixed duplicate
scale9Gridgraphics - Fixed clipping layers in OpenFL 9.5 and newer, since masks cannot be shared
- Fixed some filter imports on Flash target
- Fixed wrong minimum and maximum integer values used for certain comparisons
- Fixed string formatting conversion from ActionScript to Haxe
- Fixed
swf.runtime.MovieClipexception when setting field that does not exist on some targets
