Explore interactive maps:
All-time Olympic Games medals by Country | World's top universities | Most liveable cities
There has been much speculation about the future of Flash in the media with Flash support being dropped for mobile browsers, and 'blocked' on desktop browsers. It led to our decision in 2015 to re-develop our Flash-based data visualisation app as an HTML5 / JavaScript application. This blog summarises the different options when it comes to rewriting or converting existing Flash content. It compares several tools for converting Flash to HTML5 - including Google's Swiffy, Mozilla's Shumway and Haxe. It also looks at how Flash continues its presence on mobile devices in the forms of apps - and remains a popular platform for mobile app development.
HTML5 (the new HTML/web-page language standard) is now widely touted as the replacement of Flash, and over the past few years a number of tools have been developed to automatically convert Flash to HTML5. However, Flash has managed to maintain a sizeable presence for the following reasons:
1. Older, still widely used web-browsers, do not support HTML5. According to the latest statistics the majority of Internet users are still using browsers that do not or only partially support HTML5. If you look at the enduring usage of the relatively ancient Internet Explorer 6.0 (released in 2001) you can see that it could take a few years for the large majority of people to be using web-browsers which fully support HTML5. Even relatively recent versions of the popular Internet Explorer and Firefox browsers have only limited or no support for HTML5.
2. Mobile devices do support HTML5, but also Flash - through the appstore. Android devices support Flash in the mobile browser up to Android v 4.0, but iPads and iPhones do not. The future of Flash on mobile devices and tablets is not in the web-browser, but in the appstore. Flash has rebranded itself as Adobe AIR for mobile devices, but it is the same Flash under a different name. These are Flash apps specifically designed for touch-screen interfaces. iPads and iPhones support Flash-based apps through the appstore, and Android devices through the Google Play Store. Many of the most popular iPad and Android apps are Flash-based (you just don't know it, because it is not advertised anywhere). An example is the Flash game Machinarium, which when released on the iPad quickly became the number one paid iPad app. Adobe likewise rebranded the Flash development software from Adobe Flash Professional to Adobe Animate, but besides supporting HTML5, it has in most respects remained unchanged.
3. HTML5 still has some limitations. HTML5 has largely replaced Flash for online videos, advertising and animations, but still has some performance limitations when it comes to more complex applications. The power of HTML5 (+Javascript & CSS 3) is advancing, but creating complex apps with HTML5 can be more challenging compared to Flash.
4. Tools to convert Flash to HTML5 are still limited, and for complex applications it is not an easy process. The continuing absence of an easy conversion process from Flash to HTML5 inhibits the development of HTML5 versions of complex Flash apps, games and platforms, due to the investment required.
5. Compared to Flash actionscript, HTML5 / javascript is easier to decompile and re-use. Developing a commercial product with HTML5 / JavaScript is a bit more tricky, because even with obfuscation the code is visible as plain text in the browser. For Flash, third-party non-free software is required to view the code, which is an impediment to potential hackers (or anyone who wishes to illegally use a non-free product). This makes it more difficult to sell javascript-based apps which run in the browser (rather than in the form of a mobile app).
Converting ActionScript to JavaScript
There are several noteworthy initiatives which facilitate the conversion of Flash ActionScript to JavaScript:
- Haxe
Haxe is a cross-platform toolkit which is growing in popularity. It is similar to ActionScript and hence it is one of the easiest options for conversion, in particular if used through OpenFL. Haxe can compile to several languages including JavaScript. Some automatic conversion tools are currently available, such as as3hx and as3tohx, which convert a significant part of the code for you.
- FlexJS
Apache FlexJS and Apache Flex FalconJX cross-compiles MXML and ActionScript to HTML/JS/CSS.
- Shumway
Mozilla's Shumway uses TypeScript to translate ActionScript. It is already available as a Firefox extension, and recent headlines on news websites such as TechCrunch already announced that Shumway eliminates the need for Adobe Flash Player.
- ActionScript to TypeScript conversion
TypeScript is a superset of Javascript developed by Microsoft. It is quite similar to ActionScript, enables developers to build more powerful and robust applications (compared to plain JavaScript), and has been widely adopted since release. For these reasons it is a popular choice for conversion from ActionScript. There are several ActionScript to TypeScript conversion tools, such as AS3toTypeScript, and the more recent as3-to-typescript.
- Jangaroo
Jangaroo features some impressive demos of Flash ActionScript to JavaScript conversion. However, it is not as actively developed as Haxe.
- LayaAir
Layabox's LayaAir is an API which can publish as HTML5/WebGL from Actionscript 3 or TypeScript source code.
Google Swiffy Flash to HTML5 conversion
July 2016 update: Google Swiffy has unfortunately been discontinued.
At the moment Google Swiffy is the best available option for completely automated actionscript to javascript conversion. (Adobe Flash Professional, now Adobe Animate, no longer supports this conversion - instead providing 'code snippets' to facilitate manual conversion). Google Swiffy can convert Flash on the fly right in your browser and the conversion process is very fast - results often appear within seconds.
On the downside, Swiffy does not support all ActionScript 2 and 3 functionality. Moreover, the Swiffy HTML output cannot be easily edited.
Swiffy may not be able to convert very complex apps and games, but with some tweaking to overcome its limitations, it can convert almost anything.
It appears that ActionScript 3 support is still much more limited than for ActionScript 2, as conversion for an ActionScript 3 app led to huge number of 'not supported' errors - including non-support for some very common libraries. Google Swiffy was tested with several ActionScript 2 Flash games, ranging in complexity, and the results were surprisingly good. Swiffy has certainly come a long way since 2012, when it failed to convert even simple Flash games.
In the latest version tested there were still some remaining issues:
- Flash components did not convert. For games this is not such a big issue (since they rarely use the built-in Flash components), however, it can be problematic for applications relying heavily on these components.
- Sound did not convert.
- Some graphical artifacts remained when going from one screen to another. This shouldn't be too difficult to iron out.
- It is slightly less responsive than the Flash version. This can be especially problematic in games, where slight delays can ruin gameplay.
Aspects which converted well are as follows:
- Converted timeline graphics and animations are exactly as in the original Flash version.
- The in-game mechanics converted well, aside from the responsiveness issue mentioned above.
- Keyboard interactivity worked fine.
In conclusion
Flash will remain popular on mobile devices under the guise of 'Adobe Air' for many years to come. On desktop computers it has already largely been replaced with HTML5, initially for video, advertising and animations, and gradually for more complex applications as well. For mobile devices and tablets, Flash is supported in certain non-free web browser apps but is not likely to see widespread use. Instead it's future lies in the form of apps. Its key advantage and reason for its success is that it can be distributed relatively easily across different platforms, including Apple's Mac OS X, iOS on iPads and iPhones, Google Android, RIM BlackBerry, Microsoft Windows and even TVs. Many people have apps on their iPhones and other devices developed using a Flash development platform without realizing it.
As HTML5 is becoming more widely supported on PCs than Flash, Flash to HTML5 conversion tools and processes are becoming more sophisticated. HTML5 will need to evolve to be able develop the kind of complex apps that were previously the exclusive domain of Flash. Although many Flash developers considered HTML5 to be a step back, it is an initial small step back that will eventually lead to a giant leap forward. It is too early to tell what the possibilities will be, but the future of interactive media looks as promising as ever.
- StatSilk's blog
- Log in or register to post comments
Comments (9)
Adobe on HTML5: “We’re trying to go beyond what you can do with Flash.”
Cool, right? Flash is & was always just a means to an end (helping people express themselves, and making money selling tools to do so). Adobe continues to pour manpower into bringing Flash innovations (hardware-accelerated filters, better typography, etc.) to HTML. Check out CNET’s interview with engineering manager Arno Gourdol for more details for what we’re doing with blending modes, SVG, and more.
Interesting article, thanks! As you say it is a means to an end. I think the Flash developer platform will be reimagined as a high-level framework for producing javascript / html5 content, in addition to apps for mobile devices.
I just found pixelplant, another Flash to HTML5 online conversion service - have you tried it? They seem to support ActionScript 3. You can upload SWF files to the service.
Thanks. I just tried several which at least partially work using Google Swiffy, but they did not work at all with this one unfortunately.
very useful, keep me posted
I have 700+ educational interactive (free to use) swf files. They are hosted on <website removed>
I have implemented a library which acts as a simple wrapper around the compelxity of AS3 and allows programmers to build swf files without bothering about the nitty-gritty of AS3. Generally each swf file will be built with around 500+ lines of AS3 code on top of my common library.
I think that I will have to convert everything to html5 sooner or later.
What would be the best approach?
Regards
Of all the approaches discussed in this page I'd recommend Haxe. It allows you to continue development in an environment similar to Flash, and would probably be the least work to convert. However, if the actionscript library is not that big you might also wish to rewrite it in JavaScript (although after conversion to Haxe it can also be published as JavaScript).
I would think this would be a cut and dry question, but I am finding a lot of conflicting information on the best format for animated banne ads. This post was a real help.
But my question remains - what IS the optimum format for a simple animated banner that will maximize compatibilty with currently used browsers?
Back in the day, I made tons of animated GIFs and have done a number of SWF banners, but that was a few years ago, before mobile was a consideration.
If you could be so kind as to point me to current information on best practices for creating simple animated banners, I would be extrememly appreciative.
It would be great to see this list updated with 3 key updates.
1)Recently Google announced they are shutting down Swiffy on July 1st.
2)Development on Mozilla Shumway seems to have stopped.
3)There is a new tool, FlaExporter, for publishing faster, smaller HTML5 directly from Adobe Animate or Adobe Flash. It has an option to auto-optimize during publish that typically results in files that are 60-80% smaller.