ตัวอย่าง เช่น
แผนกห้องครัวfunction kook(พารามิเตอร์):void{//ทำงานส่วนของการทำอาหาร}แผนกพีอาร์function PR(พารามิเตอร์):void{//ทำงานส่วนของ PR}
แต่การที่ฟังก์ชั่นจะทำงานได้ ต้องมีการส่งค่า หรือมีคำสั่งมาจากเหตุการใดๆ เช่นการกดปุ่มทำงานบน Stage หรือ Panel พื้นที่ขาวๆที่วาง Object ต่างๆนั่นแหละคับ
เช่น
// กำหนด Symbol ใ้ห้เป็น Button ตั้งชื่อ Instance Name ว่า btnWeb เราจะสั่งให้เมื่อคลิกปุ่มนี้ ให้พิมพ์คำว่า "Hello Thailand" สามารถทำได้ดังนี้
สงสัยไหมว่าทำไม ต้องเขียนพารามิเตอร์เป็น e:MouseEvent จริงๆแล้วตัวแปร e ตั้งขึ้นมารับให้ทำงานในส่วนของอีเว้นที่เกิดจากเม้าส์ "MouseEvent" ดังนั้นจะตั้งชื่อตัวแปร e เป็นอย่างอื่นก็ได้ที่สื่อความหมาย ซึ่งตัวอย่างนี้ยังไม่ได้ใช้ตัวแปร e ทำงานอะไร แต่ถ้าคุณไม่อยากเป็น "พญาร้อย if หรือ กรมมะหมื่นฟังก์ชั่น" เราสามารถใช้ตัวแปร e จำแนกปุ่มไ้ด้ว่า ปุ่มไหนคลิกมา ด้วยคำสั่ง e.target// เริ่มด้วยชื่อ Instance Name ที่เราตั้งไว้ทำปุ่ม ตามด้วยชุดคำสั่งจับเหตุการณ์ คลิกbtnWeb.addEventListener(MouseEvent.CLICK, whenClick)// รับคำสั่งจากการคลิกปุ่มให้แสดงผลfunction whenClick(e:MouseEvent):void{trace("Hello Thailand");}
ยัง งงๆๆ ใช่มะ สมมติว่า มีปุ่มอยู่ 2 ปุ่ม A กับ B ถ้าหากกดปุ่ม A เราจะให้พิมพ์คำว่า "AAA" ถ้าหากว่ากดปุ่ม B เราจะให้พิมพ์ "BBB" แต่ทั้งสองปุ่ม จะส่งไปที่ฟังก์ชั่นเดียว แทนที่จะต้องเขียนเพิ่มอีก 1 ฟังก์ชั่น แล้วลองคิดดู ถ้าหากมี 100 ปุ่ม คุณจะเขียน 100 ฟังก์ชั่นรับค่าเรอะ (เอาสมองไว้ตั้งชื่ออย่างอื่นดีกว่ามะ :-))
วิธีการจะรู้ว่า กดมาจากปุ่มชื่ออะไร จะใช้ e.target นี่แหละคับเป็นตัวบอก
ตัวอย่าง
// กำหนด Instance Name ให้ปุ่มแรกชื่อ A ส่วนปุ่มสอง ชื่อ BA.addEventListener(MouseEvent.CLICK, whenClick);B.addEventListener(MouseEvent.CLICK, whenClick);function whenClick(e:MouseEvent):void{if (e.target=="A"){trace("AAA");} else if(e.target =="B"){trace("BBB");} else{trace("Not Found");}}
การเรียกฟังก์ชั่นแบบอื่นๆ
สมมติว่า เราสร้างเกมควบคุมการเก็บคะแนน เมื่อมีการยิงโดนเป้าเกิดขึ้น ภายในฟังก์ชั่น shoot เราอาจจะส่งค่าไปประมวลผลที่ฟังก์ชั่น bomb เพื่อสร้างภาพการระเบิด โดยส่งค่า ชื่อ MovieClip, การเคลื่อนไหว,การหมุน
ตัวอย่าง
function shoot(e:MouseEvent):void{// คำสั่งต่างๆ จับค่าการยิงถูกเป้า bomb(อาร์กิวเม้นท์);bomb(mc1,250,100);}function bomb(mc:MoiveClip, move:Number,rotate:Number):void{//สร้างภาพ Effect การระเบิด และการเคลื่อนไหวmc1.x -=move;mc1.y +=move;mc1.rotatation +=rotate;}
(มีต่อ รวมคำสั่ง MouseEvent, Event และอื่นๆ ยังเขียนไม่เสร็จคับ -_-)
No comments:
Post a Comment