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

คาบที่ 9 properties ก็สอนเราได้

จั่วหัวแบบนี้อีกแล้ว properties มันคืออะไรอีก มันคือแถบด้านล่างเวลาใช้เครื่องมือใช่ไหม

หายใจเข้าก่อนครับ แล้วหายใจออก ทำใจให้สบาย

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

นั่นคือ properties และ method

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

ง่ายๆ และเข้าใจที่สุด

properties = ตัวแปร
method = คำสั่ง หรือฟังก์ชั่นนั่นเองแหละ

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

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

ดังนั้น ผืนดินก็คือ properties
การหมุนรอบตัวเองก็คือ method

ส่วน method คำสั่ง function มันก็คือ ตัวแปรที่ถูกสั่งให้ตัวแปรในตัวแปรทำงานนี่เอง เพราะการหมุนรอบตัวเอง พูดให้ถูก ก็คือ โลก เคลื่อนที่ไปทางใดทางหนึ่ง ทีละกี่องศาก็ว่ากันไป มันก็คือตัวแปรคือดาว เจอกับตัวแปรคือ ตำแหน่งของดาว ซึ่งเปลี่ยนไป ตามเวลา พูดง่ายๆ ก็เหมือนกลุ่มก้อนตัวแปรที่ทำงานกันเป็นระบบนั่นเอง ตอนนี้ยังไม่เห็นภาพ ถือว่าติดไว้ก่อนนะครับ จะมาอธิบายเพิ่มทีหลัง

เมื่อเรากำหนดตัวแปรของเรา ให้มีชนิดของตัวแปรเป็นคลาสคลาสหนึ่ง สมมติคือ MovieClip ดังนี้

var pick:MovieClip = new MovieClip;

ASboy: เฮ้ย new มาจากไหน (แหม่ นานๆทีจะได้ออก)

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

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

ที่ต้อง new ก็มี MovieClip Sprite และก็บรรดา class ต่างๆ เท่านั้น

ในคลาสมูฟวี่คลิ๊ปนั้น จะมีคำสั่ง และตัวแปรสำหรับใช้งานมากมาย

ยกตัวอย่างง่ายๆ ตัวแปรในคลาสมูฟวี่คลิ๊ปชื่อ x และก็ y ทั้ง 2 ตัวเป็น properties เพราะเป็นตัวแปรในคลาสมูฟวี่คลิ๊ป

เราจะเรียกใช้ตัวแปรนั้น ก็เมื่อเราประกาศแล้วว่า ตัวแปรที่เราสร้างนั้น มีชนิดเป็น มูฟวี่คลิ๊ป ดังนั้น


var pick:MovieClip = new MovieClip;
addChild(pick);
pick.x = pick.y = 50;

เมื่อเราใส่สคริปนี้ลงไปในเฟรม เมื่อ C+E มันจะสร้างตัวแปรที่เป็น มูฟวี่คลิ๊ป (บรรทัดแรก) แต่เราสร้างมันขึ้นมาแล้วก็จริง แต่ไม่จำเป็นว่ามันจะโผล่ที่หน้าจอเรานี่นา ดังนั้น เราจึงต้องใส่มันลงไปในหน้าจอของเราโดยคำสั่ง

addChild();

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

สมมติ ผมมีมูฟวี่คลิ๊ปอีกตัวบนเสตจชื่อ spock ถ้าผมจะใส่มูฟวี่คลิ๊ป pick ลงใน มูฟวี่คลิ๊ป spock ผมก็ต้องใช้ว่า

spock.addChild(pick);

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

ส่วนบรรทัดสุดท้าย เป็นการกำหนดค่าตัวแปร x y หรือก็คือพร็อพเพอร์ตี้ของคลาสนั่นเอง โดยผมกำหนดให้ พร็อพเพอร์ตี้ของ pick ตัว x และ y = 50 หมายความว่า ตำแหน่งบนหน้าจอที่ pick จะไปแสดงคือตำแหน่งที่ x = 50 และ y = 50 pixel จากมุมซ้ายบน

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

สรุปนะครับ

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

คาบนี้จบแล้วอย่างมหาหิน ไม่เข้าใจอ่านทวนด้วยนะครับ เจอกันคาบหน้าครับ

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

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