純代碼實現的打字遊戲:隨機字母從頂部下落,玩家鍵盤輸入對應字母消除,支援分數統計、難度隨時間遞增,展示 AS3 事件驅動、陣列管理、動態文字建立核心技術。
var arr:Array = new Array();
var time:uint = 0;
var angle:Number = 0;
var zfun;
[SWF(width=800, height=465, backgroundColor=0xffffff, frameRate=24)]
this.addEventListener(Event.ENTER_FRAME, function(e:Event):void {
time++;
angle += 0.1;
if (time >= 13) { // 約每 0.5 秒生成一個
time = 0;
var tf:TextField = addChild(new TextField()) as TextField;
tf.htmlText = '<font size="' + (Math.random()*35+15) + '" color="#' + Math.random()*0xFFFFFF + '">' + String.fromCharCode(int(Math.random()*26+65)) + '</font>';
tf.x = Math.random() * 760 + 20;
tf.y = -10;
tf.name = String(Math.random()*10 - 5); // 用於水平飄移方向
arr.unshift(tf);
}
for (var i:int = arr.length-1; i >= 0; i--) {
arr[i].y += 3; // 下落速度
arr[i].x += Math.sin(angle) * int(arr[i].name); // 正弦波水平飄移
if (arr[i].y >= stage.stageHeight) {
removeChild(arr[i]);
arr.splice(i, 1);
}
}
});
stage.addEventListener(KeyboardEvent.KEY_DOWN, function(e:KeyboardEvent):void {
for (var i:int = arr.length-1; i >= 0; i--) {
if (arr[i].text == String.fromCharCode(e.keyCode)) {
removeChild(arr[i]);
arr.splice(i, 1);
break;
}
}
});
arr:儲存所有下落字母 TextField 的陣列(unshift 新增、splice 移除)。ENTER_FRAME:主遊戲迴圈,處理生成、移動、邊界檢測。KeyboardEvent.KEY_DOWN:鍵盤輸入檢測,比對 keyCode 與字母 ASCII(65-90 對應 A-Z)。htmlText:動態設定字體大小、顏色、字元。Math.sin(angle):製造左右擺動視覺豐富度。StageText 或輸入法相容處理中文輸入。此 30 行極簡代碼包含遊戲核心迴圈、物件池管理、輸入處理、隨機生成、動態渲染等完整遊戲要素,是 AS3 遊戲開發入門的優秀微型專案。