ActionScript 是 Adobe Flash 平台的程式語言,2000 年代的網頁動畫、線上遊戲、影音播放器與整站 Flash 官網都靠它驅動。Flash Player 已於 2020 年底終止支援,所有主流瀏覽器都不再執行 Flash 內容,ActionScript 寫的網頁功能在訪客眼中已是一片空白。這篇文章保留基本語法範例供閱讀舊專案時對照,重點放在三件事:現況、舊 Flash 網站該換成什麼,以及怎麼判斷自己的網站是否還埋著 Flash。本文屬於《網頁程式語言》系列,總覽見〈網頁程式設計是什麼〉。
一、ActionScript 是什麼?
ActionScript 是 Macromedia(後被 Adobe 收購)為 Flash 平台開發的物件導向程式語言,以 ECMAScript 標準為基礎,和 JavaScript 是同一個語言家族。它負責讓 Flash 動畫具有邏輯:按鈕互動、遊戲規則、載入外部資料、控制影片播放。程式與素材一起編譯成 .swf 檔,由瀏覽器的 Flash Player 外掛執行。
它有三個主要版本:1.0 與 2.0 較接近腳本語言,3.0(2006 年)改為嚴格型別的完整物件導向語言,效能與結構都大幅提升,也是絕大多數留存至今的 Flash 專案所使用的版本。本文範例皆為 ActionScript 3.0。
二、現況先講:Flash 終止支援的時間線
ActionScript 的命運和 Flash Player 綁在一起,而 Flash Player 已經正式結束。
| 時間 | 事件 | 影響 |
|---|---|---|
| 2010 年 | Apple 公開拒絕在 iPhone、iPad 支援 Flash | 行動裝置普及後,Flash 網站在手機上直接無法顯示 |
| 2015 年起 | Chrome、Firefox 陸續預設封鎖 Flash,需手動允許 | 訪客多半不會點允許,Flash 內容等同消失 |
| 2017 年 7 月 | Adobe 宣布 Flash Player 將於 2020 年底終止 | 三年緩衝期,企業開始遷移 |
| 2020 年 12 月 31 日 | Flash Player 正式終止支援 | 不再有安全性更新,Adobe 建議全面移除 |
| 2021 年 1 月起 | Adobe 封鎖 Flash 內容執行,Chrome 88 等瀏覽器移除 Flash | 任何瀏覽器都不再執行 .swf |
三、ActionScript 3.0 基本語法範例
以下範例需要 Adobe Animate 或 Apache Flex SDK 才能編譯執行,放在網頁裡沒有任何瀏覽器會執行它。保留的目的是讓您接手舊專案時能看懂程式在做什麼。
1. Hello, World
// trace 會把文字印到開發工具的輸出面板,相當於 JavaScript 的 console.log
trace("Hello, World!");
2. 變數與資料型別
var name:String = "王小明";
var age:int = 30;
var isAdult:Boolean = true;
trace("姓名:" + name);
trace("年齡:" + age);
trace("成年:" + isAdult);
與 JavaScript 最明顯的差別在冒號後的型別標註(:String、:int),型別錯誤在編譯時就會被抓出來;這個語法後來被 TypeScript 沿用。
3. 條件判斷與迴圈
var age:int = 18;
if (age >= 18) {
trace("您已成年");
} else {
trace("您尚未成年");
}
for (var i:int = 1; i <= 5; i++) {
trace("這是第 " + i + " 次迴圈");
}
4. 函數
function greet(name:String):void {
trace("Hello, " + name);
}
greet("Alice");
function add(a:Number, b:Number):Number {
return a + b;
}
trace(add(5, 10));
5. 事件處理
import flash.events.MouseEvent;
myButton.addEventListener(MouseEvent.CLICK, onButtonClick);
function onButtonClick(event:MouseEvent):void {
trace("按鈕被點擊了!");
}
addEventListener 的寫法和瀏覽器 DOM 幾乎一模一樣,改寫成 JavaScript 時只要換掉事件常數與物件來源。
6. 動畫控制
import flash.events.Event;
addEventListener(Event.ENTER_FRAME, moveObject);
function moveObject(event:Event):void {
myObject.x += 5; // 每一幀向右移動 5 像素
if (myObject.x > stage.stageWidth) {
myObject.x = 0;
}
}
ENTER_FRAME 每一幀觸發一次,是 Flash 動畫與遊戲迴圈的核心;在 HTML5 裡對應的是 requestAnimationFrame。
四、ActionScript 與 JavaScript 有多像?
兩者同源於 ECMAScript,基本語法幾乎相同,這讓 Flash 專案改寫成 HTML5 的難度比想像中低。
| 項目 | ActionScript 3.0 | JavaScript(HTML5) |
|---|---|---|
| 輸出除錯訊息 | trace() | console.log() |
| 型別標註 | var age:int(必填) | JavaScript 無;TypeScript 的 let age: number 寫法相同 |
| 事件 | addEventListener(MouseEvent.CLICK, fn) | addEventListener("click", fn) |
| 逐幀動畫 | Event.ENTER_FRAME | requestAnimationFrame() |
| 繪圖與顯示 | 顯示清單(MovieClip、Sprite) | Canvas、SVG、WebGL;CreateJS、PixiJS 等函式庫 |
| 執行環境 | Flash Player 外掛(已終止) | 所有瀏覽器內建 |
JavaScript 本身的語法教學見〈JavaScript 語法介紹〉。
五、舊 Flash 網站該換成什麼
依 Flash 原本承擔的功能,各有對應的標準技術,全部不需要外掛。
- 動畫與過場效果:CSS 動畫與轉場能處理多數需求;複雜的向量動畫用 Lottie 或 Adobe Animate 匯出 HTML5 Canvas。
- 影音播放:HTML5 的
<video>、<audio>標籤,或直接嵌入 YouTube、Vimeo。 - 互動與遊戲:Canvas、WebGL 搭配 Phaser、PixiJS 等遊戲引擎,或直接用 Unity 輸出 WebGL 版。
- 整站 Flash 官網:這是最該優先處理的:Flash 官網對搜尋引擎而言幾乎沒有內容、在手機上完全無法顯示,等於網站不存在。應重做為標準的響應式網站,作法見〈RWD 響應式網頁設計〉與〈傳統產業網站如何改版〉。
六、怎麼確認網站還有沒有 Flash
改版前的技術盤點,我們用三個訊號判斷舊站是否還埋著 Flash:
- 原始碼搜尋
.swf、<object、<embed、shockwave-flash,任一出現就代表該頁有 Flash 元件。 - 頁面某個區塊在所有瀏覽器都是空白或顯示一個拼圖圖示,八成是 Flash 版位。
- Google Search Console 對該頁沒有收錄到任何文字,或只收錄到「請安裝 Flash Player」之類的提示,代表主要內容都在 Flash 裡。
找到後,動畫類元件直接移除或改 CSS 動畫,內容類元件把文字與圖片搬回 HTML。多數企業官網的 Flash 只剩首頁輪播與選單,處理起來比想像中快。
七、結論
ActionScript 是一門設計良好的語言,但它依附的 Flash Player 已在 2020 年底結束,網頁上的 ActionScript 程式對訪客而言已不存在。今天學它的價值只在看懂舊專案並改寫成 HTML5;語法同源的 JavaScript 加上 Canvas 與 CSS 動畫,能完成 Flash 當年所有的網頁功能,而且不需要任何外掛。
八、常見問答 FAQ
ActionScript 是什麼?
Flash 和 ActionScript 現在還能用嗎?
ActionScript 和 JavaScript 有什麼關係?
舊的 Flash 網站該怎麼處理?
現在還需要學 ActionScript 嗎?
參考來源
- Adobe,〈Adobe Flash Player End of Life〉,Adobe 官方公告。
- Chromium Blog,〈Saying goodbye to Flash in Chrome〉,Google,2017。
- HARMAN,〈Adobe AIR SDK〉,HARMAN 官方網站。
- Ruffle,〈Ruffle:Flash Player emulator〉,Ruffle 開源專案。
- 新視野網頁設計,〈JavaScript 語法介紹:初學者也能看懂的完整入門教學〉,本站自有內容。
Flash 終止支援的時間線依 Adobe 與 Chromium 官方公告整理;第六節為本站網站改版前技術盤點的實務做法,不涉及特定客戶資料。