Flash in 2020 (and beyond)

The year is 2020. It is the year for perfect eyesight and the last year before Flash Player is officially dead.

What to do?

Here are some ways to be a Flash developer in 2020 and beyond.


:arrow_right: Is your content under active development?

:white_check_mark: Yes!

You can use Adobe AIR and target only the desktop or mobile if you are okay with losing Flash Player on the web. If you would like to still target the web, though, there are a few other choices.

One option is a project called “Apache Royale.” The older Flex SDK was open-sourced and given to the Apache foundation for ongoing development. The open Flex SDK evolved into Apache Royale which has ActionScript 3.0 to JavaScript support. I would consider Apache Royale production stable but I have had difficulty porting ActionScript libraries using this method.

Please consider that Apache Royale is an ActionScript compiler but is missing most Flash Player APIs, so math will translate but complex visual applications will be missing the rendering and other behaviors needed to support your use-case.

There is a release of OpenFL on NPM here that works alongside Apache Royale for ActionScript 3.0 development or uses TypeScript, Haxe or JavaScript directly.

Another option is using OpenFL and Haxe. This path requires a port from ActionScript to Haxe, but works alongside Adobe AIR for desktop or mobile support, but publishes directly to HTML5 for the web so no Flash Player plugin is required. For debugging you can still use the Flash Player plugin locally to confirm accurate behavior. OpenFL also supports C++ native releases for desktop, mobile and video game consoles and is also used in embedded systems like TiVo boxes.

:no_entry: Nope.

:arrow_lower_right: Okay, is the content an animation then?

:white_check_mark: Yes, it is!

The best option is would probably be to use Adobe Animate, which supports exporting directly to HTML5 or to video formats. You can make small or large edits to the animation this way as well. This can be done easily if you have the original FLA document file used to create the SWF animation. You may also be able to use a SWF decompiler to revert a SWF into a compatible FLA file in order to try this method.

There are also many SWF to MP4 converters available online to turn your SWF file into a video. The file will not be editable but it be compatible with HTML5 for playback.

:no_entry: No it’s more complex :confused:

:arrow_lower_right: Alright… do you still have the original source code?

:white_check_mark: Yes I think so :slightly_smiling_face:

With the original source code I would recommend going to the “active development” section above and considering your options. You could try an emulator but I would have very low expectations of that path working.

:no_entry: No :cry:

Unfortunately with no source code it is going to be difficult to get your project running. There are two different paths you could try:

One thing to try is to get a SWF decompiler. There is a free decompiler available called JPEXS which can help retrieve decompiled code. It may be more difficult to read and understand this code but this may be just what you need to follow the “active development” suggestions above.

The last choice you could take is the emulation route. Note that this was attempted by Mozilla in the “Shumway” project but ultimately it was canceled as the performance was not there. There are newer projects (like the Ruffle project) that tread this same territory but this would likely be suitable for only simpler projects.


The truth is that Flash Player has outlived other browser plugins and for good reason. Flash is an awesome way to develop games and interactive content and still remains the weapon of choice for many studios.

Do you have any other suggestions for production-ready Flash development or tips for porting content? Questions, concerns, quibbles? Comment below!

7 Likes

I recently converted a flash project to HTML5 WebGL thanks to OpenFL. The port was really easy and fast! The only differences I got were the effects (glow, shadow…) and some of the fonts. I managed to improve the rendering of the effects and fonts with few tweaks directly in Animate.
I plan to convert another project really soon.

Hello, your project was done with Adobe Flash Software or FlashDevelop (100% code) ?

I think the AS3 and SWF player will be in Wabassembly or nothing… The AS3 Framwork is faboulus… :sunny:

My project was done with Flash Pro (and compiled with it), there was some code in the timeline, but most of the code were in classes. TweenLite was used as a library, and I easily replaced with Actuate. Same thing for BulkLoader, I replaced with the powerful OpenFL api.

Bonjour Loudo, merci pour ta réponse, si je comprend bien, OpenFL peut transpiler en HRML5?

Oui, OpenFL peut compiler en javascript (WebGL, Canvas ou Dom au choix).

(I forgot to speak in English, sorry …: D)

Thank you, I just did a first test following the 1st tutorial of OpenFL and it failed …: sob:
https://www.openfl.org/learn/haxelib/tutorials/displaying-a-bitmap/

The output of HaxeDev gives this:
(unknown): Package “project.xml” was not found in any of class paths
Build halted with errors.

In the project options, I targeted HTML5 and in the editor beside (debug / release) too.

I redid everything from the start, with Haxedevelop and Flashdevelop. I compiled from IDE, then in CMD neko, html5 and Flash. Everything seems to be working, except that I have a black screen and no picture !?
I tried with Opengl.png and a personal jpg images., Nothing changes.
Where is the error … ?? :se lasser:

Good Evening everyone.
PS: this forum is in English or French speaking?

The compiler try to find project.xml. I bet you have an application.xml instead. Just rename it.

Thank you Loudo, but no, I have project.xml.
Under haxedevelp, I have the error, but the same program under Flashdevelop works well! except I don’t have the image, I only have a black screen. and I checked the project parameters, they are identical in the 2 IDEs. I’m targeting lime, hacked SDK, etc.
Image%201

the code is:

package;

import openfl.Assets;
import openfl.display.Bitmap;
import openfl.display.Sprite;

class Main extends Sprite
{

public function new ()
{

	super ();

	var bitmapData = Assets.getBitmapData ("assets/openfl.png");
	var bitmap = new Bitmap (bitmapData);
	addChild (bitmap);

	bitmap.x = (stage.stageWidth - bitmap.width) / 2;
	bitmap.y = (stage.stageHeight - bitmap.height) / 2;

}

}

I’ve just test
openfl create DisplayingABitmap
openfl test html5
with haxe 3.4.7 and openfl 8.6.1 and it works.

Can you try to reset your browser cache? (you may have already some files in your localhost:2000)
You can also check with the browser console if there is any javascript error.

Yes!

I using Apache Royale compile my project, and using OpenFL + Starling + Feathers UI frameworks.
But our proejct’s performance is not good on Edge.

Migrate my project to haxe is too diffcult for me.

Did you try to use Edge profiler to identify the bottlenecks of your application?