Tutorial บังคับรถด้วยคีบ์บอร์ด (Basic)
posted on 16 Mar 2008 06:41 by netzerodashมาเริ่มกันเลยละกัน
1. สร้างสี่เหลี่ยมขึ้นมา 1 รูปแล้วตัดให้เป็ฯเส้นทางตามใจ
2. กำหนดให้เส้นทางทั้งหมดเป็น symbol แบบ MovieClip ตั้งชื่อ Instance Name ว่า wall
3. สร้าง Symbol ใหม่ ขึ้นมาเป็นแบบ MovieClip โดย MovieClip ตัวนี้จะใช้เป็น player

4. ลาก MovieClip ที่สร้างเสร็จแล้วมาวางที่ scene จาก Library ด้านข้าง (กด F11 )เพื่อเปิดหน้าต่าง Library
5. ตั้งชื่อ Instance Name ของ MovieClip ตัวนี้ว่า player
6. คลิกที่ Frame แรกบน Timeline แล้วเปิดหน้าต่าง ActionScript (F9) เพื่อเขียน ActionScript ควบคุม
7. เขียน ActionScript ลงไป ดังนี้
fscommand("allowscale", false);//ย่อขยายจะไม่มีผลต่อการเปลี่ยนแปลงขนาด
fscommand("showmenu", false);//คลิกขวาไม่โชว์เมนู;
var speed = 5;//กำหนดความเร็ว
function move(y, x, ob) {//เขียนฟังก์ชั่นชื่อ move
var up = y-ob._height/2;//กำหนดตัวแปร ob_height คือความสูงของ ob
var down = y+ob._height/2;
var left = x-ob._width/2;
var right = x+ob._width/2;
var result = true;//กำหนดตัวแปร result เป็นตัวแปลชนิดตรรกกะ จะมีเฉพาะค่า True False
if (wall.hitTest(left, up, true)) {//เข้าเงื่อนไข เช็คว่าชนกำแพงมั้ย ในแต่ละด้าน ในที่นี้กำแพงใช้ชื่อว่า wall
result = false;//กำหนดค่าให้ result
} else if (wall.hitTest(right, up, true)) {
result = false;
} else if (wall.hitTest(left, down, true)) {
result = false;
} else if (wall.hitTest(right, down, true)) {
result = false;
}
if (result) {//เข้าเงื่อนไข เช็คค่า result ถ้าเป็นจริงให้ทำตาม เพราะ if จะทำตามเงื่อนไขที่เป็น True เท่านั้น
ob._y = y;
ob._x = x;
}
}
function detectKey() {//เขียนฟังก์ชั่นเพื่อรับค่าการกดแป้นคีย์บอร์ด
if (Key.isDown(Key.UP)) {//เช็คค่าว่ากดปุ่ม UP Arrow มั้ย ถ้ากดให้ทำตามเงื่อนไขข้างล่าง
move(player._y-speed,player._x,player);
speed = 5;
//เรียกฟังก์ชั่น move มาใช้งาน โดยการใส่ค่าให้กับฟังก์ชั่นคือ player-speed=ตำแหน่งของรถแกนy-speed;player._x
player._rotation = 90;//หมุนรถไปที่ 90 องศา
} else if (Key.isDown(Key.DOWN)) {
move(player._y+speed,player._x,player);
speed = 5;
player._rotation = -90;
} else if (Key.isDown(Key.LEFT)) {
move(player._y,player._x-speed,player);
speed = 5;
player._rotation = 0;
} else if (Key.isDown(Key.RIGHT)) {
move(player._y,player._x+speed,player);
speed = 5;
player._rotation = 180;
}
if (Key.isDown(Key.RIGHT) and Key.isDown(Key.UP)) {
//ในการเช็คค่า2ค่าโดยเชื่อมด้วย and เงื่อไนจะเป็นจริงเมื่อ เป็นจริงทั้งคู่ ในที่นี้คือ กด 2 ปุ่มพร้อมๆกัน
move(player._y-speed,player._x+speed,player);
speed = 5;
player._rotation = 135;
}
if (Key.isDown(Key.RIGHT) and Key.isDown(Key.DOWN)) {
move(player._y+speed,player._x+speed,player);
speed = 5;
player._rotation = 225;
}
if (Key.isDown(Key.LEFT) and Key.isDown(Key.UP)) {
move(player._y-speed,player._x-speed,player);
speed = 5;
player._rotation = 45;
}
if (Key.isDown(Key.LEFT) and Key.isDown(Key.DOWN)) {
move(player._y+speed,player._x-speed,player);
speed = 5;
player._rotation = -45;
}
}
_root.onEnterFrame = detectKey;//พอเริ่ม enterFrame movieClip เล่น ก็เริ่มทำงานฟังก์ชั่น detectKey
8. กำหนด Framerate ตามใจชอบในที่นี้กำหนดเป็น 30
9. Ctrl+Enter เพื่อทดสอบการทำงาน
จบ....
มีปัญหาตรงไหนถามได้ที่
MSN : zero_dash_1@hotmail.com
E-mail : netzerodash@gmail.com