最近 Google 推出了 Swiffy Extension 可以將 Flash SWF 檔案轉換為 HTML5/JS 版本
只要是 Flash CS4 以上都可以安裝
目前最新版本為 Swiffy 3.6.1
轉換功能目前已經支援大部分 ActionScript 1.0, 2.0 語法
一般按鈕事件、Clip 事件都已經支援了
影格聲音只支援 Event Sound 只能跑一次,無法 Loop
文字欄位只支援靜態文字,不能用程式改變內容,也不能輸入
動畫部分沒仔細測試,不過看起來一般 Flash 5 動畫都能正常轉換了

實際拿十年前做的一些小東西來轉轉看

滑鼠拖尾效果 HTML5 版 : Flash 版

以高速左右移動模擬物件 blur fade out 效果
HTML5 版 : Flash 版

簡單的 CAI 依照動畫提示順序將 1-10 數字按一遍
HTML5 版 : Flash 版

我知道這些東西看起來有點弱,不過十年前剛開始學 Flash 5 與程式只能做這種東西
太複雜困難的東西,目前也無法轉成 HTML5
即便如此,Flash Tool + Swiffy 大概是目前最好用的 HTML5 動畫、互動開發工具了
你可以想像這些東西用文字編輯器 + PS 要刻多久嗎? 一個小互動 AD Banner 才多少?

需要注意的是 Swiffy 產生出來的 JSON 資料,經過 GZIP 壓縮後,檔案大小平均膨脹 13% 左右
除此之外,還需要一個 Swify runtime.js
以一個最簡單的例子做測試,僅在 frame 1 加上 AS: trace($version);
產生的 HTML 如下:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Swiffy output</title>
<script src="http://www.gstatic.com/swiffy/v3.6/runtime.js"></script>
<script>
swiffyobject = {"tags":[{"type":9,"actions":
[{"value":"$version","type":305},{"type":28},{"type":38}]},{"type":2}],
"v":"3.6.1","backgroundColor":16777215,
"frameSize":{"ymin":0,"ymax":4000,"xmin":0,"xmax":6000},
"frameCount":1,"frameRate":24,"version":8};
</script>
</head>
<body style="overflow:hidden;margin:0;">
<script>var stage = new swiffy.Stage(document.body, swiffyobject);</script> 
<script>stage.start();</script>
</body>
</html>

trace 結果會直接輸出到瀏覽器的 debug console 上
假如想要傳入額外的參數到 HTML5 版的 Flash
可以在 stage.start(); 之前呼叫:

stage.setFlashVars("clickTAG=http://www.google.com");

轉換時假如遇到不支援的物件或是語法,Swiffy 會出現警告訊息
以下列出 Swiffy 3.6.1 可能會出現的 Warning 做為參考

Advanced text rendering using continuous stroke modulation is not supported.
An unsupported ActionScript instruction was encountered.
Blend modes are not supported.
Different stroke cap styles for start and end are not supported.
Filters are not supported by (Mobile) Safari.
Input text is not supported
Linear RGB color interpolation for gradients is not supported on certain platforms.
Loading ActionScript variables from a URL is not supported.
Loading a URL into a MovieClip is not supported.
Miter limit will behave differently, as it will revert to bevel instead of cutting off the joint.
Modifying the tab order is not supported.
Streaming audio is not supported.
The ActionScript class BitmapData is not supported.
The ActionScript class BlurFilter is not supported.
The ActionScript class Error is not supported.
The ActionScript class LoadVars is not supported.
The ActionScript class LocalConnection is not supported.
The ActionScript class NetConnection is not supported.
The ActionScript class Point is not supported.
The ActionScript class Rectangle is not supported.
The ActionScript class Sound is not supported.
The ActionScript class TextFormat is not supported.
The ActionScript class XML is not supported.
The ActionScript class XMLSocket is not supported.
The ActionScript function updateAfterEvent is not supported.
The ActionScript method MovieClip.attachBitmap() is not supported.
The ActionScript method MovieClip.beginFill() is not supported.
The ActionScript method MovieClip.createEmptyMovieClip() is not supported.
The ActionScript method MovieClip.createTextField() is not supported.
The ActionScript method MovieClip.curveTo() is not supported.
The ActionScript method MovieClip.endFill() is not supported.
The ActionScript method MovieClip.getBytesLoaded() is not supported.
The ActionScript method MovieClip.getBytesTotal() is not supported.
The ActionScript method MovieClip.getDepth() is not supported.
The ActionScript method MovieClip.getInstanceAtDepth() is not supported.
The ActionScript method MovieClip.getNextHighestDepth() is not supported.
The ActionScript method MovieClip.lineStyle() is not supported.
The ActionScript method MovieClip.lineTo() is not supported.
The ActionScript method MovieClip.loadMovie() is not supported.
The ActionScript method MovieClip.moveTo() is not supported.
The ActionScript method MovieClip.onRollOut() is not supported.
The ActionScript method MovieClip.onRollOver() is not supported.
The ActionScript method MovieClip.setMask() is not supported.
The ActionScript method MovieClip.swapDepths() is not supported.
The ActionScript method MovieClip.unloadMovie() is not supported.
The ActionScript method Object.addProperty() is not supported.
The ActionScript property arguments is not supported.
The ActionScript property MovieClip.filters is not supported.
The ActionScript property System.capabilities is not supported.
The fscommand action is not supported.
The global ActionScript property _accProps is not supported.
The global ActionScript property _level1 is not supported.