วันอาทิตย์ที่ 1 พฤษภาคม พ.ศ. 2554

คาบที่ 6 คำสั่ง

ถ้าคุณอ่านแล้วทำความเข้าใจมาได้ถึงตรงนี้ ยินดีด้วย คุณผ่านเลเวล 1 ของแฟลชแอคชั่นสคริป มาเป็นที่เรียบร้อยแล้ว

!!!You got Level 1!!!

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

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

โลก.พุ่งชนดวงจันทร์();

คำสั่ง หรือที่เราเรียกภาษาอังกฤษว่า ฟังก์ชั่น (function) มีไว้เพื่อกำหนดการทำงานของตัวแปร หรือบางที ก็สามารถกำหนดได้ทั้งอวกาศเลยก็ได้ ในการเรียกใช้คำสั่งนั้นมีอยู่ 2 รูปแบบ นั่นคือ

สั่งเลย กับ รอเหตุการณ์แล้วคำสั่งค่อยทำงาน

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

สั่งเลย วิธีใช้คือ

ชื่อตัวแปรหรือสิ่งที่เราจะสั่ง.คำสั่ง();

ส่วนใหญ่ คำสั่งจะมีลงท้ายด้วย () เช่นนั้นเพื่อให้แยกออกระหว่างคำสั่งกับตัวแปรนั่นเอง เช่น

pick.gotoAndPlay(1);

ในที่นี้ คำสั่ง gotoAndPlay() นั้นเป็นคำสั่งของ ไทม์ไลน์ นั่นคือการกำหนดให้เราเล่นที่เฟรมที่เท่าไหร่บนไทม์ไลน์
ไทม์ไลน์นั้นคือส่วนบนของหน้าจอการทำงานที่มีช่องเล็กๆเรียงกันไม่รู้จบ 1 ช่องเล็กนั้นเรียกเฟรม ในแต่ละเฟรมก็คือ sprite 1 ชิ้น พอมาเรียงต่อกัน เวลาโปรแกรมทำงานก็จะเล่นหรือฉายภาพ sprite ทีละ1 ไปทางขวาเรื่อยๆ ก่อให้เกิดภาพเคลื่อนไหวขึ้น ดังนั้น เมื่อมี sprite หลายๆชิ้นมาต่อกัน เราจะเรียกว่า movieclip ดังนั้น ถ้าจะไปที่เฟรมหรือsprite อื่นๆ ดังนั้น การทำงานต้องอยู่ในรูปแบบ movieclip เท่านั้น ซึ่งปรกติ การทำงานของแฟลชจะถือเป็นมูฟวี่คลิ๊ปตัวหนึ่งอยู่แล้ว จึงสามารถใช้งานคำสั่งนี้ได้เลย
ในคำสั่ง gotoAndPlay(1); มีเลข 1 อยู่ข้างใน โดยในวงเล็บหรือเลข 1 นั้น หมายถึงให้ไปเล่นที่เฟรมที่ 1 แล้วก็เล่นต่อไป นอกจากนี้ยังมี
gotoAndPlay(“pick”); อันนี้หมายถึงให้ไปเล่นที่ซีนที่มีชื่อว่า pick โดยซีนนั้นก็คือ ชื่อเฟรมที่เราตั้งชื่อให้เป็นพิเศษนั่นเอง

2 สั่งตามเหตุการณ์ คือเราจะคาดเดาว่าจะเกิดเหตุการณ์อะไร แล้วเมื่อเกิดเหตุการณ์นั้น เราค่อยสั่งมันโดยมีรูปแบบคือ

ตัวแปร.addEventListener(Event.เหตุการณ์ , คำสั่ง);

อันนี้จะยาก เดี๋ยวขอยกไปบทหน้าก่อนนะ

เอาล่ะ แบบฝึกหัด
จงหาความต่างของการทำงานระหว่าง

Pick.gotoAndStop(5);
gotoAndStop(5);
gotoAndStop(“wand”);

-เฉลย ตัวแรก มีปิ้กนำหน้า นั่นหมายถึง เราจะสั่งงานเฉพาะมูฟวี่คลิ๊ปที่ชื่อ pick เท่านั้น ปรกติ stage สามารถใส่มูฟวี่คลิ๊ปกี่อันลงไปก็ได้ เวลาเราสั่งงาน เราจึงต้องกำหนดชื่อของตัวที่เราจะให้ทำงานเสียก่อน แล้วจึงใช้คำสั่ง ดังนั้น มูฟวี่คลิ๊ปที่ชื่อ pick จะเล่นไปเฟรมที่ 5 แล้วหยุดอยู่แค่นั้น ส่วนการทำงานส่วนอื่นก็จะยังทำงานต่อไป รวมถึงการทำงานของมูฟวี่หลักด้วยก็จะยังทำงานอยู่
บรรทัด 2 เมื่อไม่ได้ระบุมูฟวี่คลิ๊ปไว้ นั่นหมายถึง มูฟวี่หลักหรือมูฟวี่ของ stage จะทำงานตามคำสั่ง โดยไปที่เฟรมที่ 5 แล้วหยุดทำงาน ส่วนมูฟวี่คลิ๊ปอื่นที่อยู่ข้างในก็จะยังทำงานต่อไป
บรรทัดสุดท้าย เป็นการที่มูฟวี่หลักไปหยุดที่เฟรมที่เราตั้งชื่อว่า wand


สรุปสำหรับวันนี้

ในการใช้คำสั่งกับตัวแปรนั้น ถ้าเราไม่กำหนดตัวแปรที่เราจะใช้คำสั่ง มันจะไปโผล่ที่เมนหลัก หรือหน้าจอหลักของเรา ดังนั้น ถ้าอยากให้ตัวลูกๆ ที่อยู่ในหน้าจอหลัก เราก็ต้องเรียกชื่อตัวลูกก่อน แล้วค่อยทำงาน ซึ่งจะมีปัญหาตรงตัวลูกที่ซ้อนอยู่ในตัวลูกอีกที วิธีเรียกตัวลูกซ้อนในตัวลูกก็คือวิธีเดียวกัน เช่น ถ้าเราจะเรียกมูฟวี่คลิ้ป a ที่อยู่ในมูฟวี่คลิ๊บ b ซึ่งมูฟวี่คลิ๊บ b วางอยู่บนเสตจ(มูฟวี่คลิ๊ปหลัก) เราจะเรียกดังนี้
b.a.คำสั่ง();
เอาตัวใหญ่กว่าขึ้นก่อน จนกว่าจะถึงตัวที่เราต้องการ

คาบนี้ก็สอนการทำงานคร่าวๆของการใช้คำสั่งแล้วนะครับ เรื่องนี้ยังอีกยาว แล้วเจอกันคาบหน้าครับ

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

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