ActionScript 控制語句是賦予 Flash 互動邏輯的核心。本文匯總最常用的 AS2/AS3 通用指令,按功能分類,附帶參數說明與實戰代碼片段,適合作為開發時的桌面速查卡。
1. 導航控制
| 指令 | 參數 | 說明 | 例子 |
| gotoAndPlay | 場景, 幀號/標籤 | 跳轉並播放 | gotoAndPlay("intro", 10); gotoAndPlay(5); |
| gotoAndStop | 場景, 幀號/標籤 | 跳轉並停止 | gotoAndStop("gameOver"); |
| nextFrame | — | 下一幀並播放 | nextFrame(); |
| prevFrame | — | 上一幀並停止 | prevFrame(); |
| play | — | 從當前幀播放 | play(); |
| stop | — | 停止播放 | stop(); |
| nextScene | — | 下一場景首幀停止 | nextScene(); |
| prevScene | — | 上一場景首幀停止 | prevScene(); |
2. 條件與循環
| 指令 | 語法 | 例子 |
| if | if (條件) { } else { } | if (score>100) { trace("Win"); } else { trace("Continue"); } |
| while | while (條件) { } | while (i<10) { i++; } |
| for | for (初始; 條件; 迭代) { } | for (var i=0; i<5; i++) { trace(i); } |
| for..in | for (var k in obj) { } | 遍歷對象屬性/陣列索引 |
| break | 跳出最近循環 | for (...) { if (found) break; } |
| continue | 跳過本次循環 | for (...) { if (skip) continue; } |
3. 滑鼠/鍵盤事件 (AS2 風格按鈕腳本)
| 事件 | 觸發時機 | 例子 |
| press | 滑鼠按下 | on(press) { trace("down"); } |
| release | 滑鼠釋放 (點擊完成) | on(release) { getURL("https://site.com"); } |
| releaseOutside | 按下後移出區域才釋放 | on(releaseOutside) { cancelDrag(); } |
| rollOver | 滑鼠進入區域 | on(rollOver) { this._alpha=50; } |
| rollOut | 滑鼠離開區域 | on(rollOut) { this._alpha=100; } |
| dragOver | 拖拽進入區域 | on(dragOver) { highlight(); } |
| dragOut | 拖拽離開區域 | on(dragOut) { unhighlight(); } |
| keyPress "<鍵>" | 特定鍵按下 | on(keyPress "<Left>") { moveLeft(); } |
常用鍵碼:<Left> <Right> <Up> <Down> <Space> <Enter> <Escape> "a"-"z" "0"-"9"
4. 載入與通信
| 指令 | 參數 | 例子 |
| loadVariables | URL, 目標, 方法 | loadVariables("data.txt", _root, "GET"); |
| loadMovie | URL, 目標(MC/層級) | loadMovie("mod.swf", container); loadMovie("mod.swf", 1); |
| unloadMovie | 目標 | unloadMovie(container); unloadMovie(1); |
| loadMovieNum | URL, 層級 | loadMovieNum("a.swf", 2); |
| getURL | URL, 窗口, 方法 | getURL("page.html", "_blank", "POST"); |
| fscommand | 命令, 參數 | fscommand("fullscreen", "true"); fscommand("quit"); |
5. 對象屬性控制 (AS2 Set Property 對應 AS3 直接屬性)
| 屬性 | AS2 Set Property | AS3 直接屬性 | 說明 |
| X 座標 | setProperty(mc, "x", 100) | mc.x = 100 | 水平位置 |
| Y 座標 | setProperty(mc, "y", 100) | mc.y = 100 | 垂直位置 |
| X 縮放 | setProperty(mc, "xscale", 150) | mc.scaleX = 1.5 | 水平縮放 % |
| Y 縮放 | setProperty(mc, "yscale", 150) | mc.scaleY = 1.5 | 垂直縮放 % |
| 透明度 | setProperty(mc, "alpha", 50) | mc.alpha = 0.5 | 0-100 / 0-1 |
| 可見性 | setProperty(mc, "visible", 0) | mc.visible = false | 布爾值 |
| 旋轉 | setProperty(mc, "rotation", 45) | mc.rotation = 45 | 度數 |
| 名稱 | setProperty(mc, "name", "new") | mc.name = "new" | 實例名 |
| 高品質 | setProperty(mc, "highquality", 1) | mc.quality = "high" | 渲染質量 |
6. 變量操作
// AS2
setVariable("score", 100);
var score = getVariable("score");
// AS3
var score:int = 100;
// 或動態
this["score"] = 100;
7. 元件複製與移除
| 指令 | AS2 | AS3 |
| 複製 | duplicateMovieClip("mc", "mc2", depth) | var mc2:MovieClip = new SourceClass(); addChild(mc2); |
| 移除 | removeMovieClip("mc2") | removeChild(mc2); mc2 = null; |
AS3 推薦使用類實例化替代 duplicateMovieClip,更符合 OOP。
8. 拖拽控制
| 指令 | 參數 | 例子 |
| startDrag | 目標, 鎖定中心, 邊界矩形 | startDrag(mc, true, {x:0,y:0,w:550,h:400}); |
| stopDrag | — | stopDrag(); |
9. 調試與註釋
| 指令 | 用法 | 例子 |
| trace | 輸出到輸出面板 | trace("x=" + x); trace(obj); |
| 註釋 | // 單行 / /* 多行 */ | // 計算分數 /* 多行說明 */ |
10. 條件幀載入檢測
ifFrameLoaded(10) { // 第10幀載入完成
gotoAndPlay(10);
}
// 或 AS3
loaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress);
11. 函數調用
// AS2
call("functionName");
// AS3
functionName();
使用建議
- 新項目全面使用 AS3:強類型、事件模型、顯示列表、效能優越
- 維護舊項目時參考 AS2 欄,但內部邏輯建議逐步遷移
- 將此表導出為 PDF,印刷 A5 雙面,貼在工位旁
- 高頻指令:
gotoAndStop, stop, play, on(release), loadMovie, getURL, trace, startDrag/stopDrag, if/else, for
內化這 50+ 指令,Flash 互動邏輯實現將如行雲流水。