Construct 2 : การควบคุมการเล่นเสียงหลายๆ ไฟล์ ใน Layout เดียว

สวัสดีครับ ! วันนี้จะมานำเสนอตัวอย่าง Event Sheets ควบคุมการเล่นเสียงหลายๆไฟล์ ใน Layout เดียว สำหรับท่านที่ทำบทเรียนคอมพิวเตอร์ช่วยสอน (CAI) หรือเกมคำศัพท์ต่างๆ ซึ่งมีการนำเสนอเนื้อหาเพียงเลย์เอาต์เดียว แต่มีหน้าเนื้อหลายหน้าต่อหนึ่งเลย์เอ้าต์ และต้องการให้เนื้อหาแต่ละหน้ามีเสียงประกอบไม่เหมือนกันเช่น เลย์เอ้าต์ที่ 1 มีการนำเสนอเนื้อหา 10 หน้า มีไฟล์ที่ใช้ประกอบ 10 ไฟล์ จะมีแนวในการทำอย่างไร ?

ในตัวอย่างที่จะนำเสนอต่อไปนี้ เป็นเพียงหนึ่งวิธี จากหลายๆ วิธี ที่สามารถทำได้ ที่เลือกวิธีนี้ (การใช้ตัวแปรควบคุมการเลือกไฟล์เสียง) เพราะเห็นว่า สามารถนำไปประยุกต์ใช้ได้อีกในหลายๆ งาน ว่าแล้วเรามาลองทำกันเลยครับ

1. ก่อนอื่นเข้าไปดาวน์โหลดไฟล์ที่จะใช้ทดลองในครั้งนี้มาก่อนนะครับ { คลิกที่นี่ }

2. เปิดไฟล์งานขึ้นมา ดูในโฟลเดอรื Sounds จะเห็นว่ามีไฟล์เสียง ชื่อ lesson1_1 ถึง lesson1_8

3. เพิ่ม Global Variable ชนิด Number ชื่อ pages ตั้งค่าเริ่มต้นเป็น 1

4. เปิดอีเวนต์ชีต ชื่อ  EventGame ขึ้นมา

  • เพิ่มอีเวนต์ System -> On start of Layout
  • เพิ่มอีเวนต์ย่อย  System -> Trigger once while true
  • ที่อีเวนต์ย่อย Add another condition -> Audio -> Is tag playing -> “reading”
  • คลิกขวาที่อีเวนต์ Audio -> Invert

5. ที่อีเวนต์ย่อย เพิ่ม Action -> Audio -> Play (by name) ใส่ค่าต่างๆ ดังรูป

6.  อีเวนต์ชีตเมื่อโหลดหน้าแรกเสร็จ จะเล่นเสียงคำศัพท์คำแรก

7. อีเวนต์ชีตตั้งค่าเฟรมของภาพเคลื่อนไหว จากตัวแปร pages-1 และ แสดงเลขหน้าโดยใช้ค่าจากตัวแปร pages

  • เพิ่มอีเวนต์ System -> Every tick
  • เพิ่ม Action -> Object -> Set frame  ใส่ค่าต่างๆ ดังรูป

  • เพิ่ม Action -> Text -> Set text  ใส่ค่าต่างๆ ดังรูป

  • เมื่อทำเสร็จจะได้อีเวนต์และแอคชั่นดังรูป

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

  • เพิ่มอีเวนต์ Mouse -> On object clicked -> Next
  • เพิ่ม Add another condition -> System -> Compare Variable
    • Variable -> pages
    • Comparison -> Less than
    • Value -> 8
  • เพิ่ม Add another condition -> Audio -> Is tag playing -> “reading”
  • คลิกขวาที่อีเวนต์ Audio -> Invert
  • เพิ่ม Action -> System -> Add to
    • Variable -> pages
    • Value -> 1

9. คลิกย้อนกลับ ดูคำศัพท์ที่ผ่านมา (การคลิกเมาส์จะมีผลเมื่อเล่นเสียงคำศัพท์จบ และเลขหน้ามากกว่า 1 เท่านั้น)

  • เพิ่มอีเวนต์ Mouse -> On object clicked -> Back
  • เพิ่ม Add another condition -> System -> Compare Variable
    • Variable -> pages
    • Comparison -> Greater than
    • Value -> 1
  • เพิ่ม Add another condition -> Audio -> Is tag playing -> “reading”
  • คลิกขวาที่อีเวนต์ Audio -> Invert
  • เพิ่ม Action -> System -> Subtract from
    • Variable -> pages
    • Value -> 1

10. ทุกครั้งที่เปลี่ยนเฟรมของ Sprite Object จะเล่นเสียงคำศัพท์ในหน้านั้นโดยอ้างอิงจากตัวแปร pages

  • เพิ่มอีเวนต์ Object -> On frame changed
  • เพิ่มอีเวนต์ย่อย  System -> Trigger once while true
  • ที่อีเวนต์ย่อย Add another condition -> Audio -> Is tag playing -> “reading”
  • คลิกขวาที่อีเวนต์ Audio -> Invert
  • เพิ่ม Action -> Audio -> Play (by name)
    • Folder -> Sound
    • Audio file name -> “lesson1_”&pages
    • Loop -> not looping
    • Volume -> 0
    • Tag (optional) -> “reading”

ภาพ Event Sheets : https://semicon.github.io/playsound//images/play_sound.png
ลองเล่นที่นี่ : https://semicon.github.io/playsound/