OpenFL is a free and open-sourcesoftware framework and platform for the creation of multi-platform applications and video games.[5][6] OpenFL applications can be written in Haxe, JavaScript (EcmaScript 5 or 6+), or TypeScript,[7] and may be published as standalone applications for several targets including iOS, Android, HTML5 (choice of Canvas, WebGL, SVG or DOM), Windows, macOS, Linux, WebAssembly, Flash, AIR, PlayStation 4, PlayStation 3, PlayStation Vita, Xbox One, Wii U, TiVo, Raspberry Pi, and Node.js.[8]
The most popular editors used for Haxe and OpenFL development[9] are:
OpenFL contains Haxe ports of major graphical libraries such as Away3D,[11][12][13]Starling,[14][15]Babylon.js,[16] Adobe Flash and DragonBones.[17][18] Due to the multi-platform nature of OpenFL, such libraries usually run on multiple platforms such as HTML5, Adobe AIR and Android/iOS.
OpenFL was created by Joshua Granick and is actively administrated and maintained by software engineer, board member and co-owner, Chris Speciale.[20]
Technical details
OpenFL
OpenFL is designed to fully mirror the Flash API.[1][6]SWF files created with Adobe Flash Professional or other authoring tools may be used in OpenFL programs.[6]
OpenFL supports rendering in OpenGL, Cairo, Canvas, SVG and even HTML5 DOM. In the browser, WebGL is the default renderer but if unavailable then canvas (CPU rendering) is used.[21] Certain features (shape.graphics or bitmapData.draw) will use CPU rendering, but the display list remains GPU accelerated as far as possible.[21]
Lime is a library designed to provide a consistent "blank canvas" environment on all supported targets, including Flash Player, HTML5, Microsoft Windows, macOS, Linux, iOS, Android, consoles, set-top boxes and other systems.[21] Lime is a cross-platform graphics, sound, input and windowing library, which means OpenFL can focus on being a Flash API, and not handling all these specifics. Lime also includes command-line tools.[21]
The Haxe port of the Starling Framework runs on Stage3D and supports GPU-accelerated rendering of vector graphics.[21] It uses a custom Stage3D implementation, and does not require the OpenFL display list to work.[21][35]