วันอังคารที่ 3 พฤษภาคม พ.ศ. 2554

คาบที่ 11 คำสั่ง-2

ในบทก่อนหน้านี้ เราเคยผ่านคำสั่งมาบ้างแล้ว ทวนอีกครั้ง ในโปรแกรมแฟลช คำสั่งนั้น จะมีเครื่องหมาย () ตามท้าย เพื่อให้แน่ใจว่า เราแยกคำสั่งออกจากตัวแปรได้ คำสั่งนั้น โปรแกรมแฟลชจะเรียกว่า funtion ซึ่ง เราสามารถเรียกคำสั่งที่มีสำเร็จรูปอยู่แล้วในโปรแกรม เช่น คำสั่งพวกควบคุมไทม์ไลน์ เช่น stop(); play(); หรือจะเป็น method ซึ่งเป็นคำสั่งภายในคลาส แต่ในคาบนี้ เราจะกล่าวถึงคำสั่งที่เราต้องสร้างมันขึ้นมาเอง

วิธีการสร้าง คำสั่ง นั้น ทำได้ดังนี้

function ชื่อสั่งตามใจชอบ () {}

ตัวอย่าง

function pick () {}


ใช้คำว่า function ขึ้นต้น เมื่อเราต้องการสร้างคำสั่ง คล้ายการสร้างตัวแปรที่ขึ้นต้นด้วย var แล้วที่เหลือก็เหมือนการสร้างตัวแปร ครับ แค่นี้ เราก็สร้างคำสั่งที่ชื่อว่า pick สำเร็จแล้ว ง่ายมะ แค่อย่าลืมว่า มันมี 2 วงเล็บ อันหนึ่งวงเล็บธรรมดา อีกอันหนึ่งเป็นปีกกา

ในการสร้างคำสั่ง บอกกันก่อนว่า ในโลกของแฟลช แฟลชมันไม่ได้ฉลาดเหมือนที่เราเข้าใจ เราจะต้องอธิบายการทำงานของสิ่งต่างๆ ให้มันรู้ด้วย มันถึงจะทำงานได้ ในกรณีนี้เช่นกัน เมื่อเราสร้างคำสั่งแล้ว แต่ถ้าเราไม่บอกว่า คำสั่งเราหมายถึง ให้ทำอะไรอย่างไร โปรแกรมก็จะไม่รู้ เราจึงต้องกำหนดให้มันด้วยว่า คำสั่งของเราใช้ทำอะไร โดยจะกำหนดรายละเอียดไว้ในวงเล็บปีกกา แล้ววงเล็บแรกใช้ทำอะไร

ครับ ขอให้นึกถึงรูปแบบของการสร้างตัวแปรไว้

var pick:int = 100;
function pick (e:MouseEvent):void {}

เห็นความเหมือนที่แตกต่างไหมครับ


ในการสร้างตัวแปร (หมายถึงกรณีสร้างนะ) คุณจะใช้ var
ในการสร้างคำสั่ง คุณจะใช้ function
กำหนดชนิดของตัวแปร :int ความหมาย ให้เป็นจำนวนเต็ม
กำหนดชนิดของคำสั่ง (e:MouseEvent):void กำหนดให้เป็นเหตุการที่เกี่ยวกับการใช้เม้าส์ และไม่ต้องส่งค่าไปไหน (ยังไม่ต้องจำ)
ค่าตัวแปร = 100
ค่าของคำสั่ง = { ยังไม่ได้กำหนด }

การกำหนดค่าของคำสั่ง เราจะใส่ไว้ในเครื่องหมายปีกกา สมมติ

function pick(){ gotoAndStop(2);}

หมายความว่ายังไง จากข้างบน มันก็หมายถึง สร้างคำสั่งชื่อ pick โดยคำสั่งนั้นคือ ให้ ไทม์ไลน์หลัก ไปแสดงที่เฟรม 2 แล้วหยุด

คำถาม ถ้าเราเขียนข้างบนลงในแอคชั่นสคริปแล้ว C+E ถามว่า ไทม์ไลน์หลักจะแสดงอะไร
เฉลย ไม่แสดงอะไรเลย เพราะเราแค่สร้างคำสั่ง เรายังไม่ได้ใช้คำสั่งครับ วิธีใช้คำสั่งก็อย่างที่เคยบอก

pick();

เท่านี้แหละ คำสั่งก็จะทำงาน ในกรณีที่เราสร้างฟังก์ชั่นไปแล้ว แต่ยังไม่ได้เรียกใช้ ระบบก็จะรู้จักคำสั่งหรือฟังก์ชั่นนั้น แต่จะไม่ทำงาน มันจะทำงานก็ต่อเมื่อเรียกใช้ ในทางกลับกัน ถ้าเราเรียกใช้งานคำสั่ง แต่เรายังไม่ได้สร้าง ระบบก็จะฟ้องเรามาในรูปแบบ error ว่า คุณยังไม่ได้สร้างฟังก์ชั่นนะ แล้วคุณจะมาเรียกใช้ฟังก์ชั่นได้ยังไง และสุดท้าย ระบบก็ไม่ทำงาน ดังนั้น ในการเรียกใช้งานฟังก์ชั่น จำเป็นต้องสร้างฟังก์ชั่นนั้นด้วย สร้างก่อนหรือสร้างหลังเรียกใช้ก็ไม่เป็นไร ขอให้สร้างเป็นพอ

สำหรับเมื่อเราใส่สคริปลงไปในช่องเขียนสคริปนั้น จำไว้เสมอว่า โปรแกรมจะไล่อ่านสคริปทีละบรรทัดจากบนลงล่าง จะอ่านกระโดดข้ามก็ต่อเมื่อ มันค้นหาคำสั่งของเราที่สร้างไว้ ดังนั้นเพื่อป้องกันการที่เราและโปรแกรมงง จึงควรสร้างตัวแปรหรือคำสั่งไว้ใกล้ๆกัน เพื่อจะได้หาเจอได้ไม่ยาก

ถ้าเป็นคำสั่งที่เกี่ยวข้องกับเหตุการณ์ เราจำเป็นต้องกำหนดเหตุการณ์ไปด้วย คล้ายการกำหนดชนิดตัวแปร แต่นี่เป็นการกำหนดชนิดคำสั่ง ซึ่งมันจะไปสอดคล้องกับการตอบสนองโดยเหตุการณ์ต่างๆ ที่จะมาสอนต่อบทหน้า

แต่ถ้าคำสั่งไม่เกี่ยวข้องกับเหตุการณ์ ในวงเล็บแรก อาจกำหนดค่าตัวแปรแทนไปเลยก็ได้ ถ้าภายในคำสั่งนั้นมีการใช้ตัวแปรด้วย เช่น

function pick (bo:int, co:String){}

หมายถึง สร้างคำสั่งชื่อ pick โดยภายในคำสั่งจะมีตัวแปรให้ใช้งานภายในคำสั่งนี้เท่านั้นคือ ตัวแปร boที่เป็นจำนวนเต็ม และ coที่เป็นตัวหนังสือ
กำหนดต่อ

function pick (bo:int, co:String){
gotoAndStop(bo);
trace(co);
}

คราวนี้เรากำหนดตัวแปรแล้ว แต่การสร้างตัวแปรในคำสั่ง เราสามารถระบุได้เลย ไม่ต้องใช้ var (มันเป็นข้อยกเว้นน่ะ)

คำสั่ง pick คือ ให้ไปที่เฟรมที่เป็นค่าของ bo ซึ่งค่าของ bo เรายังไม่กำหนด และแสดงคำที่เป็นค่าของ co เป็นตัวหนังสือ ซึ่งก็ยังไม่กำหนดเช่นกัน รูปแบบนี้เป็นคำสั่งปลายเปิด เราสามารถเรียกคำสั่งแบบนี้โดยกำหนดตัวแปรลงไปได้เลยเช่น

pick(3,"hello world");

พอเราเรียกใช้คำสั่งนี้ไป ตำแหน่งภายในวงเล็บที่เราใส่ไว้ ก็จะเข้าไปแทนค่าตัวแปรภายในคำสั่ง และทำงานเหมือนกำหนดคำสั่งไว้แล้วนั่นเอง ซึ่งจะทำให้ ไปหยุดอยู่ที่เฟรมที่ 3 และแแสดงประโยคว่า hello world ครับ ทั้งนี้ ตำแหน่งที่เรากำหนดตัวแปรลงไป ต้องมีชิดตัวแปรเป็นชนิดเดียวกัน ไม่เช่นนั้น โปรแกรมก็จะฟ้อง error อีก

สังเกตุ กรณีเราไม่ได้ใส่ตัวแปรไว้ เวลาเรียก pick();
แต่เมื่อเราใส่ตัวแปรกำหนดเอาไว้ เวลาเรียก pick(3, "hello world");

แทบไม่ต่างกัน จะต่างก็ตรง ตัวหลังมีการกำหนดค่าตัวแปรไว้เลย ซึ่งให้เราจำรูปแบบนี้ไว้ เพราะจะได้ใช้ในภายหลัง

สรุปเลยดีกว่า

1. การสร้างคำสั่งหรือเรียกกันว่าฟังก์ชั่นนั้น(ในกรณีที่อยู่ในคลาส ฟังก์ชั่นจะเรียกว่า method) จะมีรูปแบบคือ
function ชื่อ () {}
2. การเรียกใช้งานคำสั่ง ให้พิมพ์ชื่อคำสั่งที่สร้างไว้แล้ว ตามด้วย ();
3. การสร้างฟังก์ชั่น จะสร้างแบบกำหนดเหตุการณ์ หรือจะสร้างแบบปลายเปิดก็ได้

คาบหน้าจะเป็นเกี่ยวกับเหตุการณ์พร้อมทั้งเริ่มการสร้างงานที่เป็นระบบครับ หวังว่าจะตั้งใจรับฟังกันนะ โชคดีครับ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น