คำสั่งควบคุมการทำงานของ ActionScripts บทที่ 7 _ต่อ คำสั่งควบคุมการทำงานของ ActionScripts
คำสั่งตรวจสอบเงื่อนไข เป็นคำสั่งที่สามารถเลือกเส้นทางการทำงานของโปรแกรมของเราตามเงื่อนไขในโปรแกรม แบ่งออกเป็น 3 ประเภท ได้แก่ if if…else switch
คำสั่ง if เป็นการตรวจสอบเงื่อนไขของคำสั่งหลังคำว่า if ถ้าเงื่อนไขเป็น true จะทำงานตามชุดคำสั่งภายในเครื่องหมายวงเล็บปีกกา if(condition){ if(condition) statement; statement(s); } รูปแบบ
คำสั่ง if if(condition) false true statement; end
ตัวอย่างคำสั่ง if var my_x=true; if(my_x==true){ trace(“hello world”); } //หรือเขียนแบบย่อได้เป็น if(my_x==true) trace(“hello world”);
ผลลัพธ์ของคำสั่ง if
คำสั่ง if…else รูปแบบ if(condition){ statement(s); }else{ else statement; } รูปแบบ
คำสั่ง if…else if(condition) false true else statement; end
ตัวอย่างคำสั่ง if…else var my_x=false; if(my_x==true){ trace("condition is true"); }else{ trace("condition is false"); }
ผลลัพธ์ของคำสั่ง if…else
ตัวอย่างคำสั่ง if…else if(condition){ statement(s); }else if(condition){ }else{ … } รูปแบบ
ตัวอย่างคำสั่ง if…else var my_x=30; if(my_x==10){ trace(my_x); }else if(my_x==20){ }else if(my_x==30){ }else if(my_x==40){ }
ผลลัพธ์ของคำสั่ง if…else
คำสั่ง switch เป็นคำสั่งที่ใช้ในการเลือกเส้นทางการทำงานของโปรแกรมจากค่านิพจน์ที่กำหนด มีรูปแบบต่อไปนี้ expression คือ นิพจน์ที่ต้องการตรวจสอบ Clause คือ เงื่อนไขที่ต้องการตรวจสอบ statement(s) คือ ประโยคคำสั่งให้กระทำ
คำสั่ง switch รูปแบบ switch(expression){ case Clause: statement(s); [break;] [default: statement(s);] } คำสั่ง switch นั้นจะทำงานตามค่าที่อยู่หลังคำว่า switch ถ้าตรงกับ clause ของ case ใด ก็จะทำงานตามคำสั่งที่อยู่หลัง case นั้นและจะกระโดดออกจากคำสั่ง switch ทันที ด้วยคำสั่ง break แต่ถ้าไม่ตรงกับค่าใดเลย จะทำงานที่อยู่หลังคำว่า Default
ตัวอย่างคำสั่ง switch case 1: trace("A"); break; case 2: trace("B"); default: trace("D"); }
ผลลัพธ์ของคำสั่ง switch
คำสั่งในการทำงานซ้ำ เราสามารถใช้งานคำสั่งนี้ ในการทำงานซ้ำเป็นจำนวนครั้งที่แน่นอน หรือจนกว่าจะทำให้เงื่อนไขเป็นดังที่เราต้องการ แบ่งออกเป็น 3 ประเภท ได้แก่ while do while for
คำสั่ง while คำสั่งนี้ใช้ในกรณีการสุ่ม ซึ่งเราไม่ทราบว่าต้องทำการวนรอบทำการซ้ำเป็นจำนวนกี่รอบ while(condition){ statement(s); } รูปแบบ โดยที่ condition หมายถึง นิพจน์เงื่อนไขที่จะมีการตรวจสอบครั้งแรก ก่อนการเข้าทำงานในคำสั่ง while statement(s) หมายถึง นิพจน์ คำสั่ง หรือชุดคำสั่งที่จะทำงาน หาก condition ให้ค่าเป็น true
คำสั่ง while while(condition) false true statement(s); true false end
ตัวอย่างคำสั่ง while var i=0; while(i<=5){ trace(i); i++; }
ผลลัพธ์ของคำสั่ง while
คำสั่ง do while จะทำซ้ำในขณะนิพจน์เงื่อนไขยังคงเป็นจริงอยู่ ทำจนกว่าเงื่อนไขจะเป็นเท็จ แต่คำสั่งนี้จะตรวจสอบเงื่อนไขซ้ำหลังจากทำชุดคำสั่งในลูปไปแล้วอย่างน้อย 1 รอบ do { statement(s); } while(condition); รูปแบบ โดยที่ condition หมายถึง นิพจน์เงื่อนไขที่จะมีการตรวจสอบ statement(s) หมายถึง นิพจน์ คำสั่ง หรือชุดคำสั่งที่จะทำงานรอบแรก และทำงานซ้ำหาก condition ให้ค่าเป็น true
คำสั่ง do while do statement(s); while(condition); true false end
ตัวอย่าง คำสั่ง do while trace("loop 1") var i=0; do{ trace(i); i++ }while(i<=3); trace("loop 2") var j=10 trace(j); j++ }while(j<=3);
ผลลัพธ์คำสั่ง do while
คำสั่ง for คำสั่งนี้จะใช้ในการทำงานซ้ำเป็นจำนวนครั้งที่แน่นอน for(init expression;condition;update expression){ statement(s); } รูปแบบ โดยที่ init expression หมายถึง ค่าเริ่มต้นก่อนที่จะเข้าสู่การวนรอบ condition หมายถึง นิพจน์ที่ให้ค่า true หรือ false update expression หมายถึง ชุดคำสั่งสำหรับปรับปรุงค่าของตัวแปรที่ใช้เงื่อนไข statement(s) หมายถึง ชุดคำสั่งที่จะให้ทำงานเมื่อการทดสอบนิพจน์เงื่อนไขมีค่าเป็น true
คำสั่ง for for true statement; false end
ตัวอย่างคำสั่ง for var i:Number; for(i=1;i<=3;i++){ trace(i); } trace("out of loop"+i);
ผลลัพธ์ของคำสั่ง for
การใช้งานฟังก์ชัน วิธีการเขียนโปรแกรมที่ดี คือ การแยกโปรแกรมออกเป็นส่วนย่อยๆ ที่ทำงานอย่างหนึ่งจนเสร็จ ข้อดี ช่วยให้โปรแกรมของเราทำความเข้าใจง่าย สามารถนำโปรแกรมย่อยที่สร้างขึ้นไปใช้ในโปรแกรมอื่น ลดความซ้ำซ้อนในการเขียนโปรแกรมในส่วนที่ทำงานอย่างเดียวกัน ให้โปรแกรมเล็กลง
ฟังก์ชันที่ใช้กับ ActionScript ฟังก์ชันที่เราสร้างขึ้นเอง (User-defined) ฟังก์ชันที่ ActionScript จัดเตรียมไว้ให้ (predefined functions)
ฟังก์ชันที่เราสร้างขึ้นมาใช้เอง function name([param1][,param2][…paramN]){ statement(s) } รูปแบบ โดยที่ name หมายถึง ชื่อที่ต้องการตั้งให้กับฟังก์ชัน ต้องไม่ซ้ำกับชื่อของฟังก์ชันอื่นที่มีอยู่แล้ว params หมายถึง ชื่อที่ใช้สำหรับค่าพารามิเตอร์ ที่จะส่งผ่านไปประกอบการทำงานของฟังก์ชัน โดยพารามิเตอร์จะเพียงตัวเดียว หลายตัว หรือไม่ระบุเลยก็ได้ กรณีที่ต้องการระบุพารามิเตอร์หลายตัว ให้คั่นแต่ละตัวด้วยเครื่องหมายจุลภาค(,) พารามิเตอร์ที่กำหนดจะเป็นข้อมูลชนิด String Number Boolean ก็ได้ statement(s) หมายถึง ชุดคำสั่งที่จะทำงานในฟังก์ชัน จะมีเพียงคำสั่งเดียวหรือมากกว่าก็ได้
ตัวอย่างฟังก์ชันที่เราสร้างขึ้นเอง function my_AreaCircle(radius){ var my_answer=Math.PI*radius*radius; trace(my_answer) }
ตัวอย่างฟังก์ชันที่เราสร้างขึ้นเอง การเรียกใช้งานฟังก์ชันที่เราสร้างขึ้น my_AreaCircle(20);
ผลลัพธ์ฟังก์ชันที่เราสร้างขึ้นเอง
การคืนค่าจากฟังก์ชัน หากฟังก์ชันที่เราสร้างขึ้นต้องการคืนค่ากลับมา เราสามารถใช้คำสั่ง return เพื่อคืนค่าฟังก์ชัน function box(height,wide,long){ return height*wide*long; }
การคืนค่าจากฟังก์ชัน การเรียกใช้งานฟังก์ชันที่เราสร้างขึ้น allArea=box(4,5,6); trace(allArea);
ผลลัพธ์ฟังก์ชันที่เราสร้างขึ้นเอง
การใช้งานฟังก์ชันสำเร็จรูปที่มีอยู่แล้ว ฟังก์ชันนี้เป็นฟังก์ชันที่ ActionScript ได้ประกาศไว้ก่อนแล้ว ดังนั้นจึงสามารถเรียกใช้งานได้เลย โดยฟังก์ชันแต่ละตัวจะมีเอกลักษณ์เฉพาะตัว และต้องการค่าพารามิเตอร์ที่ต่างกัน บางฟังก์ชันเราได้เคยใช้งานแล้วเช่น trace()
ฟังก์ชันสำหรับตรวจสอบชนิดข้อมูล typeof(expression) รูปแบบ
ฟังก์ชันสำหรับตรวจสอบชนิดข้อมูล var x=100; var y; trace(typeof(3)); trace(typeof("3")); trace(typeof(Math.PI)); trace(typeof(my_ball)); trace(typeof(x)); trace(typeof(y));
ผลลัพธ์
ฟังก์ชันที่ใช้แปลงชนิดข้อมูลและออบเจกต์ type(expression) เช่น String(expression) Number(expression) Boolean(expression) Object(expression) Array(expression) รูปแบบ
ฟังก์ชันที่ใช้แปลงชนิดข้อมูลและออบเจกต์ var my_mc:MovieClip; var my_arr:Array; var my_bool:Boolean; var my_num:Number; var my_obj:Object; var my_str:String
ฟังก์ชันที่ใช้แปลงชนิดข้อมูลและออบเจกต์ trace("type MovieClip:"+(typeof MovieClip(my_str))); trace("type object:"+(typeof Object(my_str))); trace("type Array:"+(typeof Array(my_num))); trace("type Boolean:"+(typeof Boolean(my_mc))); trace("type String:"+(typeof String(my_mc))); trace("type Number:"+(typeof Number(my_obj))); trace("type function:"+(typeof Function(my_mc))); trace("type null:"+(typeof null(my_arr))); trace("type undefined:"+(typeof undefined(my_obj)));
ฟังก์ชันที่ใช้แปลงชนิดข้อมูลและออบเจกต์