หน้า: 1 ... 16 17 18 19 20 21 22 [23] 24 25 26 27 28 29 30 31
 
ผู้เขียน หัวข้อ: อนุบาลงาน ActionSctipt  (อ่าน 311020 ครั้ง)
0 สมาชิก และ 1 ขาจร กำลังดูหัวข้อนี้
จารย์ก่อครับ ขอเรื่อง hitTest เนียนๆง่ายๆหน่อยสิครับ ผมไม่ค่อยสันทัดครับ   ปลื้ม  อย่าเพิ่งไป class นะ

อย่างเช่นวัตถุชนกัน , เล่นกับ shape ด้วยน่ะครับ

 ไหว้ ขอบคุณครับ จะเขียนเองแต่...ไม่ค่อยรู้เรื่องเลย   ฮิ้ววว



// ลองทำดู ไอ้ shapeFlag มันไม่มีผลเลยอ่ะ
// มันมีผลแค่ตัวเดียว อีกตัวไม่มีผลแฮะ
เช่น ตัวนึงลากไปโดน ต้องเลือกว่าจะ  shapeFlag กับตัวไหนรึไงครับ มันเล่นเชปกับทั้งตัวไปโดน ตัวยอมโดน ได้ไหม
หรือว่าต้อง เอา getBounds อะไรนั่นมาช่วยด้วย  (เหงื่อแตกพลั่ก) หนูยังไม่เคยค่ะ แนะนำด้วยนะคะ
« แก้ไขครั้งสุดท้าย: 07 ก.พ. 2009, 16:56 น. โดย ej_sing » บันทึกการเข้า

ขอเบิ้ลนะ
ไปลองเล่นกับ hitTest ง่ายๆมานิดหน่อย เลยทำเกมส์มาให้เล่น

ตัวเกมส์นี้ยังมั่วๆอยู่บ้างนะครับ คิดไปทำไป เพิ่มนิด เพิ่มหน่อย แก้นู่นแก้นั่น ไม่ได้คิดไว้ก่อน
สคริปเลยเยอะเพียบไปหมด  ( เขียนตัวจับเวลาแล้วเอ๋ออีกต่างหาก เลยต้องยืมเขามา )

ใช้โค้ดพื้นฐานง่ายๆ
แต่ตัวนี้เวอร์ชั่นง่าย เพราะเวลาเช็คชนขอบ จะเป็นจุดกลางของลูกกลม กับเส้นขอบเท่านั้น จะมีพื้นที่เยอะก่อน hitTest จะทำงาน
ตัวยากยังทดลองอยู่ จะลองตั้งจุดเช็คการชนรอบๆวงกลมสัก 8 จุด ทีนี้ยากนรกเลย


หลักการทำงานก็ เช็คการชนกันระหว่าง เส้นขอบกับ ลูกกลม ด้วย mouseListener.onMouseMove
แต่ผมเพิ่มการเช็คอีกชั้นด้วยพื้นที่ภายใน ( b/ground ของทางวิ่ง ) กับลูกกลมด้วย (คือเช็คกันลากออกนอกทางด้วย )
พอลากออกนอกทางเร็วๆแล้ว ชั้นเดียวมันเหมือนทำงานไม่ทัน เลยซ้อนสองชั้น ซึ่งยอมรับว่ามั่วหน่อย
ถ้าชน ก็รันฟังชั่นต่างๆ ให้ทำอะไรก็ว่าไป ง่ายๆน่ะครับ

โค้ดไว้ก่อนนะ ...เยอะ อธิบายไม่ไหว
อย่าลืมเซฟเวลามาดูกันมั่งนะ  ลันล้า ช่วยหาแมลงด้วยนะครับ
// สามารถปล่อยเม้าส์เพื่อพักมือได้นะครับ แต่เวลาไม่หยุดนะเอ้า


THE WAY ... ทางนรกไม่หมกเม็ด by ej_sing  ... ลุยโลด  โวย 

<a href="http://img3.f0nt.com/flash/878f657a4f7c830bfbfa442664251c1e.swf" target="_blank">http://img3.f0nt.com/flash/878f657a4f7c830bfbfa442664251c1e.swf</a>

ใครอยากให้อธิบายโค้ด ขอมานะครับ ว่างๆจะมาอธิบาย ( บองตรงๆว่าโค้ดผมห่วยหน่อยนะครับ สุยทำไปเรื่อยๆ ไม่ได้คิดล่วงหน้า)


// ผมเล่นไม่เคยผ่านเลยว่ะครับ   ง่ะ  ....โทษเมาส์ไม่ดี  หมีโหด~
« แก้ไขครั้งสุดท้าย: 11 ก.พ. 2009, 02:22 น. โดย ej_sing » บันทึกการเข้า

ขอๆ  กรี๊ดดดดด
บันทึกการเข้า

ล้ำลึกคนึงหาในดวงจิต ใจเคยคิดตัดสวาทมิอาจสิ้น
ดั่งก้านบัวหักกลางชลาสินธุ์ ผิว่าสิ้นไร้เยื่อยังเหลือใย
 เฮ้ย!? เอาจริงรึ มันห่วยนะ  ง่ะ  พอเป็นแนวทางละกันนิ
// ลบอโค้ดไม่เกี่ยวออกเกือบหมดแล้ว
เริ่มเลยนะ

แอบอ้าง

stop();
var shapeFlag = true;   
finish_mc._visible = false;   // อันนี้เป็น มูวี่ตอนจบ เอามันมาหลบไว้ก่อน ( จริงๆจะใช้ attach แต่ขี้เกียจ)

var mouseListener:Object = new Object();     // สร้าง event ตรวจจับการชน
mouseListener.onMouseMove = function() {
   if (_mc2.hitTest(_mc._x, _mc._y, shapeFlag)) {  // หากชนกับเส้นขอบ ให้รันฟังค์ชั่น out()
      out();
   }
   if (!area.hitTest(_mc._x, _mc._y, shapeFlag)) {  // เช็คขั้นที่สอง หากออกนอกทาง ให้รันฟังค์ชั่น out()
      out();
   }
   if (finish_area.hitTest(_mc._x, _mc._y, shapeFlag)) {  // หากถึงเส้นชัย ใหรันฟังค์ชั่น finish()
      finish();
   }
   updateAfterEvent();
};
Mouse.addListener(mouseListener);



ที่ใช้ Listener เพราะเราเล่นเกมส์ด้วยการลากเม้าส์อยู่แล้ว เลยไม่ต้องใช้ enterFrame มาทำ event ในการตรวจการชน


ส่วนนี้คือ ลาก _mc เพื่อเล่นเกมส์
แอบอ้าง
_mc.onPress = function() {
   this.startDrag();
   clockStart();                                     // ลากปั๊ป จับเวลาปุ๊ป
};

_mc.onRelease = function() {
   this.stopDrag();                              //เหนื่อยก็พัก ปล่อยเม้าส์ได้
};


ส่วนฟังค์ชั่นหลักๆ ก็ง่ายๆเลยครับ
เมื่อรันฟังค์ชั่นนี้ ก็จะ..
แอบอ้าง
function out() {
   clockStop();                                             // หยุดเวลาไว้
   _mc.stopDrag();                                     // หยุดลาก
   Mouse.removeListener(mouseListener);     //ลบ event การตรวจจับการชน
   _mc.gotoAndStop(2);                              // แสดงภาพระเบิด
   delete _mc.onPress;                              // กันการลากต่อ ด้วยการลบ onPress ซะเลย
   over_mc.gotoAndPlay(2);                        // แสดง มูวี่เกมส์โอเวอร์ มีปุ่มเริ่มใหม่อยู๋ข้างใน
}

// วิธีเริ่มใหม่คือ _root.gotoAndPlay(1) เพื่อรีเซ็ท ( แบบง่ายๆ ) // มั่วโคตรๆ
ผมปล่อยไทม์ไลน์หลักให้ไหลไปห้าเฟรมแล้วค่อยหยุดเพราะตัวเกมส์ และสคริปอยู่เฟรม 5



// อันนี้ฟังค์ชั่นเมื่อเล่นจบ

function finish(){
   _mc.stopDrag();                                          // หยุดลาก
   Mouse.removeListener(mouseListener);        //ลบ event การตรวจจับการชน
   delete _mc.onPress;                                   // กันการลากต่อ ด้วยการลบ onPress ซะเลย
   finish_mc._visible = true;                           // แสดง มูวี่เกมส์จบ มีปุ่มเริ่มใหม่อยู๋ข้างใน
   clockStop();                                          // หยุดเวลาไว้
   finish_mc.ftime_txt.text = total_time;        // อันนี้แสดงเวลาที่เล่นจบ โดยดึงค่าจากตัวจับเวลามา
}




ส่วนแรก _mc2 ที่ทำเป็นเส้นขอบห้มาลากมาชน เป็น shape นะครับ ไม่ใช่ line




ส่วนอันนี้เป็น พื้นที่ด้านใน เอากันไว้ว่า ไม่ให้ลากออกนอกพื้นที่นี้



จริงๆหลักๆก็มีแค่นี้ครับ


จบครับ ............. เรื่องตัวจับเวลาไม่ขอกล่าวนะครับ ยืมเว็บนี้มา _http://www.gieson.com/Library/projects/utilities/stopwatch/
« แก้ไขครั้งสุดท้าย: 11 ก.พ. 2009, 03:08 น. โดย ej_sing » บันทึกการเข้า

ต้องกดซูมเล่นถึงจะรอด กร๊าก (แต่ก็ตายปลายทาง)
บันทึกการเข้า

ทำมาหากินด้วยการเปิดร้านสกรีนเสื้อยืด จ้ะ
ช่องแคบมากๆ  กร๊าก
บันทึกการเข้า

Las Noches Rubicundior
57 วิครับ ใช้เมาส์ปากกาซะเลย เกย์ออก
บันทึกการเข้า

นักเขียนการ์ตูนรายปี
 กรี๊ดดดดด  ชอบมาก
บันทึกการเข้า

ล้ำลึกคนึงหาในดวงจิต ใจเคยคิดตัดสวาทมิอาจสิ้น
ดั่งก้านบัวหักกลางชลาสินธุ์ ผิว่าสิ้นไร้เยื่อยังเหลือใย
เจ๋งเลยครับพี่ ผมยังไม่เคยเล่นกับ hittest เลย
บันทึกการเข้า

ก่อสร้างกับทำลาย เหมือนที่ลงมือ ต่างที่การกระทำ
โชว์ซะหน่อย เล่นครั้งแรก ครั้งเดียวผ่านเลยนะ
แต่ปล่อยมือ ไป 5 ครั้ง ถอยหลัง 2 มิล ไป 1 ครั้ง

« แก้ไขครั้งสุดท้าย: 11 ก.พ. 2009, 20:05 น. โดย oottee » บันทึกการเข้า

 ไอ้มืดหมี สงสัยยากไปแฮะ
บันทึกการเข้า



 น้องดำ

คลิกซ้าย 1 ที ขวา 1 ที มาคลิกซ้ายในวง GOAL
« แก้ไขครั้งสุดท้าย: 11 ก.พ. 2009, 21:23 น. โดย I'm Nut » บันทึกการเข้า

 เฮ้ย!? เฮ้ยยยย ทำได้ไง
.....มีบั๊กอีกแล้ว ( ประจำ )

มาเฉลยด้วยนะครับ  ฮือๆ~
บันทึกการเข้า

มีนวลอยู่ครับ


คลิกซ้าย 1 ที ขวา 1 ที ลากออกมาคลิกซ้ายในวง GOAL
สั่งห้ามคลิกขวาไปเลยครับ  กร๊าก
บันทึกการเข้า

ห้ามคลิกขวาไม่ได้ครับ  ง่ะ

ผมมาช้าไปเหรอเนี่ย ขอโทษครับ น้าแอ๊ด  ฮือๆ~
(วันที่ 9 ผมอยู่ กทม. น่ะครับ ไม่ได้เข้าบอร์ดเลย)

มีทริคจำง่ายอยู่อันนึงครับ

shapeFlag เป็น false เอาไว้เช็ค วัตถุ กับ วัตถุ
shapeFlag เป็น true เอาไว้เช็ค จุด กับ วัตถุ

น้าแอ๊ดลองเปลี่ยนจากจับลาก ให้เป็นวิ่งตามเมาส์สิครับ ผมว่า โกงยากกว่าเดิม.. (รึเปล่า)
บันทึกการเข้า

หน้า: 1 ... 16 17 18 19 20 21 22 [23] 24 25 26 27 28 29 30 31
 
 
Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2007, Simple Machines | Thai language by ThaiSMF Valid XHTML 1.0! Valid CSS!