BLOG
網站專欄 Q & A
網站技術

ActionScript 是什麼?語法介紹、Flash 終止支援後的現況與替代方案

ActionScript 是 Adobe Flash 平台的程式語言,2000 年代的網頁動畫、線上遊戲、影音播放器與整站 Flash 官網都靠它驅動。Flash Player 已於 2020 年底終止支援,所有主流瀏覽器都不再執行 Flash 內容,ActionScript 寫的網頁功能在訪客眼中已是一片空白。這篇文章保留基本語法範例供閱讀舊專案時對照,重點放在三件事:現況、舊 Flash 網站該換成什麼,以及怎麼判斷自己的網站是否還埋著 Flash。本文屬於《網頁程式語言》系列,總覽見〈網頁程式設計是什麼〉。

ActionScript 語法示意圖:Adobe Flash 平台使用、以 ECMAScript 為基礎的程式語言

一、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 本身沒有完全消失:Adobe Animate(Flash 的後繼工具)仍可輸出 HTML5 Canvas 動畫,但程式改用 JavaScript;ActionScript 3 只剩在 Adobe AIR(現由 HARMAN 維護)製作桌面與行動 App 時使用。至於保存舊 Flash 內容,開源專案 Ruffle 用 WebAssembly 模擬 Flash Player,讓舊 .swf 能在現代瀏覽器播放,適合典藏用途,不適合當成正式網站的解法。

三、ActionScript 3.0 基本語法範例

以下範例需要 Adobe Animate 或 Apache Flex SDK 才能編譯執行,放在網頁裡沒有任何瀏覽器會執行它。保留的目的是讓您接手舊專案時能看懂程式在做什麼。

1. Hello, World

ActionScript 3.0
// trace 會把文字印到開發工具的輸出面板,相當於 JavaScript 的 console.log
trace("Hello, World!");

2. 變數與資料型別

ActionScript 3.0
var name:String = "王小明";
var age:int = 30;
var isAdult:Boolean = true;

trace("姓名:" + name);
trace("年齡:" + age);
trace("成年:" + isAdult);

與 JavaScript 最明顯的差別在冒號後的型別標註(:String:int),型別錯誤在編譯時就會被抓出來;這個語法後來被 TypeScript 沿用。

3. 條件判斷與迴圈

ActionScript 3.0
var age:int = 18;
if (age >= 18) {
    trace("您已成年");
} else {
    trace("您尚未成年");
}

for (var i:int = 1; i <= 5; i++) {
    trace("這是第 " + i + " 次迴圈");
}

4. 函數

ActionScript 3.0
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. 事件處理

ActionScript 3.0
import flash.events.MouseEvent;

myButton.addEventListener(MouseEvent.CLICK, onButtonClick);

function onButtonClick(event:MouseEvent):void {
    trace("按鈕被點擊了!");
}

addEventListener 的寫法和瀏覽器 DOM 幾乎一模一樣,改寫成 JavaScript 時只要換掉事件常數與物件來源。

6. 動畫控制

ActionScript 3.0
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_FRAMErequestAnimationFrame()
繪圖與顯示顯示清單(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<embedshockwave-flash,任一出現就代表該頁有 Flash 元件。
  • 頁面某個區塊在所有瀏覽器都是空白或顯示一個拼圖圖示,八成是 Flash 版位。
  • Google Search Console 對該頁沒有收錄到任何文字,或只收錄到「請安裝 Flash Player」之類的提示,代表主要內容都在 Flash 裡。

找到後,動畫類元件直接移除或改 CSS 動畫,內容類元件把文字與圖片搬回 HTML。多數企業官網的 Flash 只剩首頁輪播與選單,處理起來比想像中快。

七、結論

ActionScript 是一門設計良好的語言,但它依附的 Flash Player 已在 2020 年底結束,網頁上的 ActionScript 程式對訪客而言已不存在。今天學它的價值只在看懂舊專案並改寫成 HTML5;語法同源的 JavaScript 加上 Canvas 與 CSS 動畫,能完成 Flash 當年所有的網頁功能,而且不需要任何外掛。

八、常見問答 FAQ

ActionScript 是什麼?
ActionScript 是 Macromedia(後由 Adobe 收購)為 Flash 平台開發的物件導向程式語言,以 ECMAScript 標準為基礎,與 JavaScript 同源。它負責讓 Flash 動畫具有邏輯:按鈕互動、遊戲規則、載入資料、控制影片,程式與素材一起編譯成 .swf 檔,由瀏覽器的 Flash Player 外掛執行。主要版本為 1.0、2.0 與 3.0,其中 3.0(2006 年)是嚴格型別的完整物件導向語言,也是絕大多數留存 Flash 專案使用的版本。
Flash 和 ActionScript 現在還能用嗎?
網頁上不能。Adobe 已於 2020 年 12 月 31 日終止 Flash Player 支援,並自 2021 年 1 月起封鎖 Flash 內容執行,Chrome、Edge、Firefox、Safari 都移除了 Flash,任何瀏覽器都不再播放 .swf。ActionScript 3 只剩在 Adobe AIR(現由 HARMAN 維護)製作桌面與行動 App 時使用;Adobe Animate 仍可製作動畫,但輸出 HTML5 Canvas 時程式改用 JavaScript。開源的 Ruffle 模擬器能讓舊 .swf 在現代瀏覽器播放,適合典藏,不適合當正式網站的解法。
ActionScript 和 JavaScript 有什麼關係?
兩者都以 ECMAScript 標準為基礎,基本語法幾乎相同:變數、條件、迴圈、函數、事件監聽的寫法都能一眼對照。差別在 ActionScript 3 有必填的型別標註(var age:int),這個語法後來被 TypeScript 沿用;輸出除錯用 trace() 而非 console.log();顯示物件用 MovieClip、Sprite 而非 DOM 與 Canvas;逐幀動畫用 ENTER_FRAME 事件而非 requestAnimationFrame。因為同源,把 Flash 專案改寫成 HTML5 的難度比想像中低,主要工作在替換顯示與動畫的 API。
舊的 Flash 網站該怎麼處理?
依原本功能換成標準技術,全部不需外掛:動畫與過場效果改用 CSS 動畫,複雜向量動畫用 Lottie 或 Adobe Animate 輸出 HTML5 Canvas;影音改用 HTML5 的 video、audio 標籤或嵌入 YouTube;互動與遊戲改用 Canvas、WebGL 搭配 Phaser、PixiJS 等引擎。整站 Flash 官網要優先處理:它對搜尋引擎幾乎沒有內容、在手機上完全無法顯示,應重做為響應式網站。檢查方法是在原始碼搜尋 .swf、object、embed 等字樣,或看頁面是否有在所有瀏覽器都空白的區塊。
現在還需要學 ActionScript 嗎?
不需要,除非您要維護既有的 Adobe AIR 應用程式或接手改寫舊 Flash 專案。網頁動畫與互動的正確起點是 JavaScript,加上 CSS 動畫、Canvas 與 WebGL,能完成 Flash 當年所有的網頁功能,而且所有瀏覽器內建支援。若您喜歡 ActionScript 3 的嚴格型別,TypeScript 是最接近的現代選擇。學會看懂 ActionScript 的價值只有一個:把舊專案的邏輯搬到 HTML5,本文的對照表就是為這件事準備的。

參考來源

  1. Adobe,〈Adobe Flash Player End of Life〉,Adobe 官方公告。
  2. Chromium Blog,〈Saying goodbye to Flash in Chrome〉,Google,2017。
  3. HARMAN,〈Adobe AIR SDK〉,HARMAN 官方網站。
  4. Ruffle,〈Ruffle:Flash Player emulator〉,Ruffle 開源專案。
  5. 新視野網頁設計,〈JavaScript 語法介紹:初學者也能看懂的完整入門教學〉,本站自有內容。

Flash 終止支援的時間線依 Adobe 與 Chromium 官方公告整理;第六節為本站網站改版前技術盤點的實務做法,不涉及特定客戶資料。

關於作者

內容揭露:本文由新視野網頁設計 SEO 團隊撰寫。文中連結的站內指南與延伸閱讀均為本站自有內容;新視野提供網頁設計與 SEO/AI SEO 服務,讀者在採用本文建議前請自行評估是否符合自身情況。文中引用的第三方研究與官方文件皆附可點擊出處,歡迎查證。

新視野網頁設計 SEO 團隊

新視野網頁設計自 2005 年起投入企業網站建置與搜尋行銷,服務範圍涵蓋 RWD 網站設計、技術 SEO、結構化資料佈署,以及 AI 搜尋時代的 AEO/GEO 內容優化。本文由新視野 SEO 團隊撰寫、審閱並持續維護更新。

服務據點:
台中(總公司)台中市南區忠明南路 758 號 21 樓 B4台北高雄
聯絡電話:
04-2260-1329
公司資訊:
關於我們公司位置線上詢價
對外平台:
FacebookLinkedIn
本站同主題內容:
JavaScript 語法介紹RWD 響應式網頁設計VBScript 是什麼網頁程式設計是什麼

歡迎推廣本文,請務必連結(LINK)本文出處:新視野網頁設計公司