มาเฉลยล่ะครับ
คำตอบคือมีหลายวิธี แล้วแต่ว่าใครจะคิดได้ ไดนามิคกว่ากัน
แน่นอนทำแบบคำตอบถึกนั้นก็ทำได้ ง่ายด้วย แต่เวลาอยากจะแก้ไขค่าไอ้นู่นไอ้นี่ มันลำบากเกิน
เราจะใช้อันนี้กัน แถ่นแทนแท้นนนนนนนนน
เราจะสร้าง function() ขึ้นมาใช้เองนอกเหนือจาก global function() ที่แฟลชมีให้ เราสามารถสร้างฟังก์ชั่นส่วนตัวขึ้นมาเองได้ง่ายๆ
ตัวอย่าง
function myFunc (){ // ประกาศสร้างฟังก์ชั่นชื่อ myFunc
trace("hello F0nt"); // ให้ฟังก์ชั่นนี้ เมื่อเรียกแล้วให้ output ว่า "hello F0NT"
}; //จบการทำงานของฟังก์ชั่น
//ตัวอย่างการใช้ ใส่สคริปไว้ที่ปุ่ม
on(release){
_root.myFunc();
} //output ว่า "hello F0NT"
//หรือกหากใส่ที่เฟรมก็เรียกโดยไม่ต้องใส่ _root ก็ได้
_btn.onRelease=function(){
myFunc();
}; // output ว่า "hello F0NT"
ทีนี้เราจะเขียนแบบมีการส่งค่าเข้าไปด้วย
function myFunc (txt:String){ // ประกาศสร้างฟังก์ชั่นชื่อ myFunc(txt จะแทนค่าที่จะส่งเข้าไป ในที่นี้เราจะส่ง text จึงเป็น String)
trace(txt); // ให้ฟังก์ชั่นนี้ เมื่อเรียกแล้วให้ output (ค่าที่ส่งเข้ามา)
}; //จบการทำงานของฟังก์ชั่น
//ตัวอย่างวิธีใช้
_btn.onRelease=function(){
myFunc("ทดสอบ ทดสอบ"); //ตัวอย่างเราส่งคำว่า "ทดสอบ ทดสอบ" เข้าไปให้ฟังก์ชั่น myFunc() ทำงาน
};
ฟังก์ชั่นนี้ก็จะ output ค่าที่เราส่งเข้าไป "ทดสอบ ทดสอบ"
*** ส่วนมากเราจะประกาศฟังก์ชั่นไว้ที่เฟรมแรกเลยครับเพื่อให้มีผมตั้งแต่เปิดงาน
งงไหมครับ ไม่งงนะ
เอาอีกตัวอย่างง่ายๆ
function num_plus (num1:Number,num2:Number){ // ประกาศสร้างฟังก์ชั่น num_plus(เราจะส่งค่าตัวเลขเข้าไปสองค่าแทนด้วย num1,num2)
trace(num1+num2); // ให้เอาค่าที่ส่งเข้ามา้บวกกันแล้ว output
};
//ลองใช้โดย
_btn.onRelease=function(){
num_plus(10,20); // ส่งค่า 10 กับ 20 เข้าไปให้ฟังก์ชั่น num_plus() ทำงาน
};
// ผล output : 30
ทีนี้กรณีนี้ คือการ trace ดูเท่านั้น มองดีๆจะเห็นว่า ถ้าไม่ trace ออกมาดูค่าที่ส่งเข้าไปนั้นก็จะหายวับเข้ากลีบเมฆ
หากเราอยากใด้ค่านั้นคืนออกมา
จากตัวอย่างบน เราอยากได้ค่า 30 ที่บวกเสร็จแล้วเอามาใช้งาน
เราต้องให้ฟังก์ชั่นมันคืนค่าออกมาให้เราด้วย ...
return()
เราจะปรับสคริปใหม่นิหน่อยให้มันคืนออกมา
function num_plus (num1:Number,num2:Number){ // ประกาศสร้างฟังก์ชั่น num_plus(เราจะส่งค่าตัวเลขเข้าไปสองค่าแทนด้วย num1,num2)
return(num1+num2);// ให้เอาค่าที่ส่งเข้ามา้บวกกันแล้ว คืนค่าออกมา
};
//ทดสอบดู
_btn.onRelease=function(){
my_num = num_plus(10,20); // ส่งค่า 10 กับ 20 เข้าไปให้ฟังก์ชั่น num_plus() ทำงาน แล้วคืนค่าออกมาส่งให้ my_num
trace(my_num)
};
// ผล my_num = 30
มีประโยชน์นะครับลองๆทำความเข้าใจครับ
ทีนี้เราจะเอามันมาสั่งแรนดอมครับ
จากตัวอย่างอันเดิมที่ถามว่า เราจะสั่ง mc ทั้งสิบตัวพร้อมกันยังไง
กรณีนี้ผมยังไม่ใช้ลูปพวก do while for ไว้หลังๆจะมาเขียนเรื่องลูป
ผมจะเขียนแบบนี้ครับ
function myFunction(mc:MovieClip){ //สร้างฟังก์ชั่นขึ้นมาหนึ่งอัน เราจะส่ง mc เข้ามาแรนด้อมค่าต่างๆในฟังก์ชั่นนี้กัน
xPos = random(380)+10; //แรนดอมค่า _x
yPos = random(80)+10; //แรนดอมค่า _y
nscale = random(100)+20; //แรนดอมค่า scale
mc._x = xPos; //ส่งค่าแรนดอมตำแหน่ง _x ให้ mc ที่ส่งเข้ามา
mc._y = yPos; //ส่งค่าแรนดอมตำแหน่ง _y ให้ mc ที่ส่งเข้ามา
mc._xscale = nscale; //ส่งค่าแรนดอม xscale ให้ mc ที่ส่งเข้ามา
mc._yscale = nscale; //ส่งค่าแรนดอม yscale ของ ให้ ที่ส่งเข้ามา
};
_btn.onRelease = function() { // เราก็ส่ง _mc ทั้งสิบตัวเข้าไปฟังก์ชั่น
myFunction(_mc1);
myFunction(_mc2);
myFunction(_mc3);
myFunction(_mc4);
myFunction(_mc5);
myFunction(_mc6);
myFunction(_mc7);
myFunction(_mc8);
myFunction(_mc9);
myFunction(_mc10);
};
จากตัวอย่างเดิม เราสร้าง mc ขึ้นมาอีก 9 ตัว ใส่ชื่อให้ครบ
แล้วลองดูครับ
http://img2.f0nt.com/flash/1fbcf7dbd30a34642d4f7684f90a2aaa.swfจริงๆใ้ช้ลูปรันเอาก็ได้ง่ายกว่า แต่เอาแบบนี้ก่อนครับ ถึกๆดี
คราวหน้าเรื่อง การเปรียบเทียบ if else ครับ