หลายๆคนที่เคยเขียนโปรแกรมก็คงคุ้นเคยกับฟังก์ชั่น(Function)
ดี ฟังก์ชั่นเป็นโปรแกรมย่อยโปรแกรมหนึ่ง ซึ่งฟังก์ชั่นนี้จะช่วยลดโค้ดที่ทำงานซ้อนกัน
และลดความยุ่งยากในการเข้าใจสคริป เนื่องจากมีการแบ่งการทำงานเป็นส่วนๆ จุดสำคัญอีกจุดหนึ่งของฟังก์ชั่นก็คือ
คุณสามารถเรียกใช้โปรแกรมย่อยกี่ครั้งก็ได้ สำหรับผู้ที่เคยเขียนโปรแกรมมาแล้วคงเข้าใจได้ไม่ยาก
เนื่องจากมีหลักการพื้นฐานเหมือนกัน (แค่คุณเขียน Java Script เป็น, ฟังก์ชั่นใน
Flash5 ก็หมูเลยครับ)
เริ่มเขียน Function
เปิดหน้าต่าง Actions ขึ้นมา คลิ๊กที่ปุ่มบวก
เลือก Actions แล้วเลือกคำสั่ง function
ในช่อง Name ให้ใส่ชื่อฟังก์ชั่นลงไปว่า MyFunction
แล้วในช่อง Parameters ให้ใส่ชื่อตัวแปรที่รับเข้ามาลงไปว่า
MyVar ก็เป็นอันจบการสร้างฟังก์ชั่น แต่ฟังก์ชั่นที่คุณสร้างขึ้นมานั้น
ยังไม่สามารถทำงานได้เนื่องจากว่ายังไม่มีสคริปอยู่ภายในฟังก์ชั่นนี้ วิธีการใส่สคริปในฟังก์ชั่นไม่ยาก
แค่คุณคลิ๊กที่บรรทัดคำสั่งของ Function แล้วเลือกสคริปที่ต้องการใส่ลงไปจากปุ่มบวก
ในที่นี้ให้ใส่ลงไปตามนี้ครับ
function MyFunction (MyVar) {
return MyVar*2;
}
ฟังก์ชั่นด้านบนเป็นฟังก์ชั่นที่สมบูรณ์แล้ว และเป็นฟังก์ชั่นที่ผมจะใช้เป็นตัวอย่างในครั้งนี้
ซึ่งคุณสามารถก๊อบไปใช้ได้ทันที สำหรับรูปแบบฟังก์ชั่นมีดังนี้ครับ
function ชื่อฟังก์ชั่น (ตัวแปรสำหรับรองรับค่าที่ส่งมา)
{}
รู้จักวิธีเรียกใช้ Function
คุณสามารถเรียกใช้ฟังก์ชั่นที่เขียนขึ้นมาได้จากทุกบรรทัดของสคริป
ถึงแม้ว่าฟังก์ชั่นที่คุณเขียนขึ้นมาจะอยู่ด้านท้ายสุดของสคริป แต่คำสั่งเรียกใช้ฟังก์ชั่นกลับไปอยู่บนสุดของสคริป
ก็ไม่เป็นปัญหาแต่อย่างใด สำหรับข้อความในการเรียกฟังก์ชั่นนั้นก็จะเป็น
MyFunction()
ขอย้ำว่าข้อความนี้ต้องอยู่ในโหมด Expression
นะครับ ไม่งั้นมันจะเห็นเป็นข้อความไปเลย วิธีการเรียกใช้ฟังก์ชั่นจากคำสั่งอื่นๆก็เช่น
คำสั่ง Set Variable
nVar = MyFunction()
คำสั่ง Trace
trace (MyFunction())
การส่งค่าไปให้ฟังก์ชั่น
เป็นการส่งค่าๆหนึ่งไปให้ฟังก์ชั่นโดยไม่ใช้ตัวแปรในการส่ง แต่เมื่อฟังก์ชั่นรับค่าไปแล้ว
ฟังก์ชั่นจะนำค่าที่ได้ไปเก็บไว้ในตัวแปรแบบ Local
เมื่อฟังก์ชั่นนั้นทำงานจบเรียบร้อยแล้วตัวแปรนั้นๆก็จะถูกทำลายไป เหมือนกับฟังก์ชั่นตัวอย่าง
จะเห็นว่าฟังก์ชั่นมีการรับค่าที่ส่งมา ไปเก็บไว้ในตัวแปร MyVar
ซึ่งเป็นตัวแปรแบบ Local (จะเห็นได้เฉพาะภายในฟังก์ชั่นเท่านั้น
และตัวแปรนี้จะถูกทำลายเมื่อจบฟังก์ชั่น)
ตัวอย่างการส่งค่าไปให้ฟังก์ชั่น
MyFunction(3)
จากคำสั่งด้านบนหมายความว่า ให้เรียกใช้ฟังก์ชั่นที่ชื่อ MyFunction
พร้อมกับส่งค่า 3 ไปให้ฟังก์ชั่นด้วย การส่งค่าไปให้ฟังก์ชั่นนั้นสามารถส่งได้หลายค่าโดยใช้เครื่องหมาย
, คั่นระหว่างค่า แต่มีข้อแม้ว่าต้องระบุตัวแปรที่จะมารองรับค่านั้นๆในฟังก์ชั่นด้วยเช่น
MyFunction(3,6,9)
แต่ในฟังก์ชั่นคุณกำหนดตัวแปรเพียงตัวเดียวแบบนี้
function MyFunction (MyVar) {
}
ดังนั้น ค่าภายในตัวแปร MyVar
ก็จะเป็น 3 ส่วนค่าที่เหลือก็จะไม่ถูกใช้งาน
เนื่องจากว่าไม่มีตัวแปรมารองรับ โค้ดที่ถูกต้อง จะต้องเป็นแบบนี้
function MyFunction (MyVar,MyVar2,MyVar3) {
}
เมื่อคุณต้องการส่งข้อความไปให้ Function ก็เพียงใส่เครื่องหมาย ""
ครอบค่าลงไปแบบนี้
MyFunction("TextHere")
การคืนค่ากลับ
เมื่อมีค่าส่งมาก็ต้องมีการส่งค่ากลับคืนไป แต่การคืนค่ากลับไปนั้นจะไม่อยู่ในรูปตัวแปร
คือไม่มีตัวแปรมารองรับนั่นเอง ส่วนใหญ่ในการคืนค่ากลับนั้น ค่าที่คืนไปจะตัวเลข
ไม่ใช่ Text (ที่มีเครื่องหมาย "" ครอบ) แต่คุณก็สามารถส่งค่าที่เป็น
Text กลับไปได้ โดยใส่เครื่องหมาย "" ครอบ
คำสั่งที่ใข้ในการคืนค่าก็คือคำสั่ง return
ครับ ในช่อง Value ให้ใส่ค่าที่ต้องการส่งกลับไป(คืนค่า)ลงไป
แต่ถ้าคุณใส่ตัวอักษรลงไป Flash จะถือว่าตัวอักษรตัวนั้นคือชื่อตัวแปร และจะนำค่าของตัวแปรนั้นส่งกลับไป
เช่น
function MyFunction (MyVar) {
return MyVar*2
}
หมายความว่าให้นำค่าของตัวแปร MyVar
มาคูณด้วย 2 แล้วนำผลลัพธ์ที่ได้ส่งกลับไป
ส่วนการส่งค่ากลับไปแบบ Text นั้นมีดังนี้ครับ
function MyFunction (MyVar) {
return "MyVar";
}
หมายความว่าให้ส่งข้อความ MyVar กลับไปครับ
Flash จะไม่เห็น MyVar เป็นตัวแปรเนื่องจากว่ามีเครื่องหมาย
"" ครอบอยู่ มีอยู่จุดหนึ่งที่ผมคิดว่าเป็นบั๊กอย่างเต็มๆเลยก็คือเรื่องเครื่องหมาย
"" ถ้าคุณใส่ return
"MyText" ในขณะที่อยู่ใน Normal Mode
แล้วคุณย้ายไปเป็น Expert Mode แล้วเปลี่ยนกลับมาเป็น
Normal Mode อย่างเก่า เครื่องหมาย ""
จะหายไป ทำให้คำสั่งกลายเป็น return MyText
ซึ่งอาจจะทำให้สคริปทำงานผิดไปได้ เนื่องจาก Flash มองเห็น MyText
เป็นตัวแปรไม่ได้มองเห็นเป็นข้อความแต่อย่างใด
ผมคิดว่ามีอีกหลายท่านที่ยังไม่เข้าใจเกี่ยวกับเรื่องการส่งค่ากลับไปแน่นอน
แม้แต่ผมเอง ในตอนแรกๆที่ลองศึกษาเรื่องการส่งค่ากลับใน VB ก็สงสัยเหมือน
แต่พอมาเล่น Flash แล้วรู้เรื่องทันที ท่านใดที่ยังไม่เข้าใจ อ่านต่อเลยครับ
ขอย้ำไว้ก่อน สิ่งที่ผมเขียนต่อไปนี้เป็นเพียงความเข้าใจของผมที่สรุปออกมาแล้ว
ซึ่งบางครั้งมันอาจจะดูขัดกับหลักความจริง แต่อย่างไรก็ตาม ขอให้คุณเข้าใจไว้ว่านี่คือวิธีการทำความเข้าใจอย่างง่ายๆ
ซึ่งไม่จำเป็นต้องอิงหลักความจริงมากนัก(ตามสไตล์ผม)
result = MyFunction(3);
function MyFunction (MyVar) {
return MyVar * 3;
}
จากสคริปด้านบน ที่บรรทัดแรก คุณจะเห็นคำสั่ง result
= MyFunction(3) ในคำสั่งนี้เป็นการกำหนดค่าตัวแปร result
โดยค่าที่ได้ จะมาจากผลของการรันฟังก์ชั่น MyFunction
ซึ่งในคำสั่งที่เรียกใช้ฟังก์ชั่นนั้น มีการส่งค่าเลข 3
ไปด้วย (MyFunction(3) ไงครับ) ต่อมาให้มาดูในส่วนของฟังก์ชั่น
MyFunction จะเห็นคำสั่ง return
MyVar * 3 นี่เป็นคำสั่งในการคืนค่ากลับไป โดยค่าที่คืนกลับไปนั้นจะเป็นค่าของตัวแปร
MyVar คูณด้วย 3
ดังนั้นผลลัพธ์ที่ได้จะเป็น 9 (เพราะส่งค่า
3 มาให้ MyFunction
เก็บในตัวแปร MyVar, Myvar
* 3 = 9)
ย้อนกลับไปดูที่คำสั่ง result = MyFunction(3)
หลังจากที่ฟังก์ชั่น MyFunction รันเสร็จแล้ว
MyFunction จะส่งค่ากลับมาเป็น 9
จำได้ไหมครับ แล้ว Flash ก็จะเอาค่า 9 เนี้ย
ไปแทนที่คำสั่ง MyFunction(3) ทำให้คำสั่งจากเดิม
result = MyFunction(3);
กลายเป็น
result = 9;
เท่ากับว่า Flash เอาค่าที่ได้จากการ return
นั้นไปแทนที่คำสั่งที่เรียกใช้ฟังก์ชั่นนั้นๆ ทำให้ค่าของตัวแปร result
เป็น 9
สรุปว่าตอนนี้เข้าใจกันถ้วนหน้าแล้วนะครับ
ถ้าใครยังมีปัญหาข้องใจ ให้ไปโพสไว้ที่เว็บบอร์ดเลยครับ เมื่อคุณอ่านบทความนี้จบแล้ว
ให้เตรียมตัวไปอ่านบทความ สคริปกับเวลา ต่อเลยนะครับ เพราะว่ามันมีส่วนของฟังก์ชั่นรวมอยู่ด้วย
ทำให้คุณได้ฝึกฝนอย่างต่อเนื่อง จะได้ไม่ลืมครับ สำหรับตัวอย่างการใช้ฟังก์ชั่นนั้น
ผมขอย้ำว่าใช้ได้เฉพาะ Flash5 เท่านั้นนะครับ ถ้าคุณใช้ Flash4 คุณจะไม่สามารถเปิดไฟล์ตัวอย่างนี้ได้เลยครับ
|
|