「打地鼠/打小狗」是 Flash 遊戲入門首選,涵蓋隨機數、遮罩、拖曳隱藏滑鼠、碰撞檢測、計時器、動態文字顯示分數等核心機制。本文完整拆解邏輯架構與製作流程。

Mouse.hide() + startDrag() 讓「菜刀」跟隨滑鼠,增強打擊感。Math.random() 配合遮罩層,只在洞口區域顯示小狗,實現「探頭」效果。hitTest 判斷菜刀與小狗重疊,命中加分。
// 主時間軸框架代碼
var score:Number = 0;
var timeLimit:Number = 30; // 秒
var timerId:Number;
function startGame():Void {
score = 0;
txtScore.text = "0";
Mouse.hide();
knife_mc.startDrag(true); // 菜刀跟隨滑鼠
timerId = setInterval(countDown, 1000);
spawnDog(); // 首次生成
}
function countDown():Void {
timeLimit--;
if (timeLimit <= 0) {
clearInterval(timerId);
endGame();
}
}
function spawnDog():Void {
// 隨機選一個洞口 (假設 5 個洞,實例名 hole0~hole4)
var idx:Number = Math.floor(Math.random() * 5);
var targetHole:MovieClip = this["hole"+idx];
// 在洞口遮罩區域內 attachMovie 小狗動畫
var dog:MovieClip = targetHole.attachMovie("DogMC", "dog"+getNextHighestDepth(), getNextHighestDepth());
dog._x = 0; dog._y = 0; // 相對洞口置中
// 設定小狗自動消失計時
setTimeout(function(){ if(dog) dog.removeMovieClip(); }, 1500);
// 下一輪隨機延遲生成
setTimeout(spawnDog, Math.random()*2000 + 500);
}
// 菜刀點擊檢測
knife_mc.onMouseDown = function():Void {
for (var i=0; i<5; i++) {
var dog:MovieClip = this._parent["hole"+i].dog; // 簡化引用
if (dog && this.hitTest(dog)) {
score += 10;
txtScore.text = String(score);
dog.gotoAndPlay("hit"); // 播放被打動畫
break;
}
}
};
function endGame():Void {
Mouse.show();
knife_mc.stopDrag();
// 顯示最終分數、重新開始按鈕等
}
ZOL 軟體下載站原文(含源檔下載連結)