บทความนี้เราจะมาทำการ Random เปิดป้ายทายคำกัน ดังตัวอย่างในรูป
แนวทางในการทำ
1. สร้าง ป้ายเปิดขึ้นมา 9 ช่อง
2. สร้างกรอบ Hilight
3. สร้างปุ่ม Random
4. เขียนโค๊ดควบคุมการทำงาน
- เมื่อคลิ๊กปุ่ม Random ให้ Randomค่า 1-9 ขึ้นมาหนึ่งตัว
- ให้ Hilight วิ่งจากซ้ายไปขวาตั้งแต่ป้าย 1-9 จำนวน 3 รอบ
- ให้ Hilight หยุดที่ตำแหน่งที่ random ได้
ถ้าพร้อมแล้วลงมือทำกันเลย
1. สร้าง ป้ายเปิดขึ้นมา 9 ช่อง
1) สร้างโปรเจค File > New ตั้งชื่อไฟล์ ขนาด 1024 x 768 pixels พื้นหลังขาว
2) สร้างสี่เหลี่ยม 1 รูป (ขนาด width: 200px ,height: 200px) แล้วพิมพ์ เลข 1 เลือกทั้งหมด คลิ๊กขวา แล้วเลือก Convert to Symbol ตั้งชื่อ "b1" (type:movie clip)
3) ทำเช่นเดียวกันกับสี่เหลี่ยมรูปแรกโดยตั้งชื่อเป็น b1-b9 เราก็จะได้สี่เหลี่ยมทั้งหมด 9 รูป
4) ตั้งชื่อที่ใช้อ้างอิงในโค๊ดไปที่ หน้าต่าง properties แล้วตั้งชื่อ Instance name เป็น b1-b9 กับสี่เหลี่ยมทั้งหมด 9 รูป
2. สร้างกรอบ Hilight
5) สร้างสี่เหลี่ยมขึ้นมาอีกหนึ่งอัน ลบให้พื้นหลังหายไป เหลือแต่เส้นกรอบที่มีขนาดเท่ากับป้ายทั้ง 9 อัน (200 x 200 px มีความหนา 10 px)
6) คลิ๊กขวา แล้วเลือก Convert to Symbol ตั้งชื่อ "hilight" (type:movie clip)
7) ตั้งชื่อที่ใช้อ้างอิงในโค๊ดไปที่ หน้าต่าง properties แล้วตั้งชื่อ Instance name เป็น "hilight"
3. สร้างปุ่ม Random
8) สร้างวงกลมสีเหลืองขึ้นมา 1 วง พร้อมใส่ข้อความว่า "Random"
9) เลือกทั้งหมด คลิ๊กขวา แล้วเลือก Convert to Symbol ตั้งชื่อ "random_btn" (type:movie clip)
10) ตั้งชื่อที่ใช้อ้างอิงในโค๊ดไปที่ หน้าต่าง properties แล้วตั้งชื่อ Instance name เป็น "random_btn"
4. เขียนโค๊ดควบคุมการทำงาน
11) สร้าง Layer ขึ้นมาหนึ่งเลเยอร์ตั้งชื่อว่า "script" บน timeline
12) ใน หน้าต่าง Action ให้เพิ่มโค๊ดดังนี้
_global.x_pos =[]; _global.y_pos =[]; _global.status_pos=[false,false,false,false,false,false,false,false,false]; _global.array=[]; _global.count_item=0; for(var i=0;i<9;i++){ _global.x_pos[i]=eval("b"+int(i+1))._x; _global.y_pos[i]=eval("b"+int(i+1))._y; } var loops:Number=3; var times:Number=5; var count:Number=0; function hilightRun(){ hilight._x=_global.x_pos[_global.array[_global.i]]; hilight._y=_global.y_pos[_global.array[_global.i]]; _global.i++; if(_global.i%(_global.count_item+1)==0){ _global.i= _global.array[0]; _global.count+=1; } if(_global.intID==undefined){ _global.intID = setInterval(hilightRun,100); } if(_global.count==loops) { clearInterval(_global.intID); StopToPoint(); } } function StopToPoint(){ hilight._x=_global.x_pos[_global.array[_global.indexs]]; hilight._y=_global.y_pos[_global.array[_global.indexs]]; _global.indexs++; if(_global.stopID==undefined){ _global.stopID = setInterval(StopToPoint,150); } if(_global.array[_global.indexs-1]==_global.randomIndex){ clearInterval(_global.stopID); _global.status_pos[_global.randomIndex]=true; eval("b"+int(_global.randomIndex+1))._visible=false; } } random_btn.onPress = function(){ _global.count_item=0; _global.count=0; _global.intID=undefined; _global.stopID=undefined; _global.array=[]; for(var i=0;i<9;i++){ if(_global.status_pos[i]==false){ _global.array[_global.count_item]=i; _global.count_item+=1; } } _global.i= _global.array[0]; _global.indexs=_global.array[0]; _global.randomIndex = Math.round(Math.random()*(8)); while(_global.status_pos[_global.randomIndex]==true){ _global.randomIndex = Math.round(Math.random()*(8)); } hilightRun(); }
13) ทดลองรันโดยกด Ctrl + Enter เพื่อดูผลลัพธ์ จะเห็นว่าเมื่อกดปุ่ม Random ตัว Hilight จะวิ่งตั้งแต่อันแรกไปจนอันสุดท้ายเป็นจำนวน 3 รอบ และหยุดในตำแหน่งที่ Random ขึ้น
14) ดาวน์โหลไฟล์ตัวอย่างได้ที่นี่