กลับมาอีกครั้งหลังจากที่หายไปนาน เอาล่ะ.....เอาล่ะ.... สำหรับในบทความนี้ก็จะมาอธิบายเกี่ยวกับเนื้อหาเรื่อง การตัดฉากและ Sound กันนะครับ ซึ่งในเรื่องของการตัดฉากนั้นมันก็จะต่อเนื่องจากบทความในบทแรกครับ และแน่นอนว่าต่อจากเนื้อหาของเรื่องการตัดฉากก็จะต่อด้วยของตำแหน่งการวางภาพครับแต่ว่าเนื่องจากตอนเขียนเวลามันไม่เพราะว่าเนื้อหาในเรื่องนี้ของการตัดฉากนั้นค่อนข้างมากแล้วก็ออกจะทำผมงงๆหน่อย  ก็เลยขอเอามาลงแค่เฉพาะเรื่องการตัดฉากอย่างเดียวก่อนครับ    ส่วนเรื่องของตำแหน่งการวางภาพผมก็จะขอตัดไปกล่าวในบทถัดๆไปละกันครับ ในส่วนนี้นั้นผมจะขออัพเกรดการสอนขึ้นมาหน่อยโดยอ้างอิงมาจาก Version ใหม่นะครับ(Version 6.12)ส่วนบทความที่ผ่านๆมาหากต้องเพิ่มเติมอะไรแล้วเดียวผมจะบอกอีกทีนึงละกัน เอาล่ะเรามาดูกันดีกว่าว่าในตอนนี้เราต้องเรียนเรื่องอะไรกันนะครับ

- Sound
- การตัดฉาก(Transitions)

- Sound สำหรับในเรื่องของเสียงและเพลงใน Renpy นั้น ไฟล์ที่รองรับก็ได้แก่ .ogg, .mp2, .mp3, .wav นะครับ

เริ่มต้นจากเรื่องง่ายๆก่อนนะจ๊ะสำหรับส่วนนี้จะมีคำสั่งหลักๆอยู่ 3 ตัวด้วยครับ คือ คำสั่ง play, queue และstop 

คำสั่ง play เป็นคำสั่งที่ใช้สำหรับเปิดเพลงหรือเสียง วีธีการใช้งานคำสั่งนีมีดังนี้ครับ

"play" ( "sound" | "music" ) Name of music file 
( "fadeout" Number )?
( "fadein" Number )?
( "channel" 0-7 )?


option ต่างๆก็ได้แก่
"sound" | "music" (เลือกเอาอย่างใดอย่างหนึ่ง) เป็นการกำหนดให้รู้ว่าเสียงที่เราเอาเข้ามานั้นเป็นเสียงหรือเพลง

Name of music file หมายถึงชื่อไฟล์ของเพลงหรือเสียงที่เราต้องการครับ เราจำเป็นที่ตะต้องเขียนช่อนี้อยู่ภายใต้เครื่องหมาย “ ” ด้วยนะครับ(เพราะเป็นค่า string) ไฟล์ที่สามารถรองรับได้ก็ได้แก่ไฟล์ .ogg, .mp2, .mp3, .wav
"fadeout" Number เป็นการกำหนดว่าเมื่อปิดหรือหยุดเพลงมาแล้วเสียงมันจะค่อยลงภายในกี่วินาที ส่วน Number นั้นหมายถึงเวลาที่จะใชัให้มันค่อยลง คิดเป็นวินาที จะมีหรือไม่มีก็ได้

"fadein" Number เป็นการกำหนดว่าเมื่อเปิดเพลงมาแล้วเสียงมันจะค่อยๆดังขึ้นภายในกี่วินาที ส่วน Number นั้นหมายถึงเวลาที่จะใชัให้มันดังขึ้น คิดเป็นวินาที จะมีหรือไม่มีก็ได้

"channel" 0-7 เป็นการกำหนดแชนแนลของเสียงว่าจะให้ออกที่แชนแนลไหน มี 7 แชนแล(0-7) จะมีหรือไม่มีก็ได้ ในกรณีที่เป็น sound ค่า defaults เป็น 0 ถ้า เป็น music ค่า defaults จะเป็น 7 (แชนแนลก็คือลำโพงนะแหล่ะครับ มีอยู่ 8 ตัวคือ ลำโพงหมายเลข 0-7 ) ส่วนใหญ่การกำหนดอย่างงี้หมายถึงการเล่นเพลงหลายๆเพลงพร้อมกันในเวลาเดียวกันอ่ะนะ ประมาณว่าเปิดเพลงซ้อนกันได้ 8 เพลงในเวลาเดียวกันอ่ะนะ หรือบางทีก็มีเพลงเป็นพื้นหลังแล้วเอฟเฟคก็ช่องอื่นเป็นต้น

ตัวอย่างการใช้งานคำสั่งนี้ เช่น 

    play music "mozart.ogg"
    play sound "18005551212.ogg"
    play sound "woof.ogg"

เรามาดูอะไรที่มันออกจะซับซ้อนกว่านี้หน่อยดีกว่านะจ๊ะ
    play music [ "01.wav", "012.wav" ] fadeout 1.0 fadein 1.0 
เล่น 2 เพลงต่อกันไปเลย (จบเพลงสุดท้ายก็มาเริ่มเพลงแรกใหม่) ถ้าอยากต่ออีกเป็น 3 หรือ 4 เพลง ก็ค่อยเพิ่มต่อไปอีกเรื่อยๆนะครับ

คำสั่ง queue (คิวเพลงน่ะแหล่ะ) คำสั่งนี้เหมือนกับคำสั่ง play ก็มิปาน ต่างกันนิดหน่อยตรงที่มันไม่สามารถกำหนด fadein/fadeout ได้เท่านั้นเอง 
มีลักษณะการใช้งานดังนี้

"queue" ( "sound" | "music" ) Name of music file
( "channel" 0-7 )?


ส่วนoption ต่างๆให้ไปดูที่คำสั่ง play เอาละกันครับเพราะว่ามันเหมือนกันเด๊ะเลยล่ะ ตัวอย่างการใช้งานมีดังนี้
    queue sound "woof.ogg"
    queue music [ "a.ogg", "b.ogg" ]

คำสั่ง stop ใช้สำหรับหยุดเพลงและเสียง มีลักษณะการใช้งานดังนี้

"stop" ( "sound" | "music" )
( "fadeout" Number)?
( "channel" 0-7 )?


option ต่างๆให้ไปดูที่คำสั่ง play เช่นกันครับ ตัวอย่างการใช้งานมีดังนี้
    stop sound
    stop music fadeout 1.0


- การตัดฉาก(Transitions)
ก่อนที่ผมจะเริ่มสอนในหัวข้อนี้นั้นผมขอบอกก่อนว่าเรื่องนี้นั้นเป็นเรื่องที่ต่อเนื่องมาจากหัวข้อเรื่อง image นะครับหากใครลืมๆไปแล้วสามารถย้อนกลับไปดูทบทวนได้ครับ เอาล่ะสำหรับคำสั่งแรกในหัวข้อนี้ที่ผมต้องการที่จะเสนอนั่นก็คือ
คำสั่ง hide แปลตามตัวเลยครับหมายถึงการซ่อนตัวละครเอาไว้หากเราต้องการที่จะทำให้ตัวละครนี้หายไปจากฉากของคุณเราขอแนะนำคำสั่งนี้ครับ หลักการใช้งานก็มีดังนี้ครับ

“hide” ชื่อตัวละคร

ตัวอย่างการใช้งานคือ 

    image eileen happy = "eileen_happy.png"
    hide eileen happy

คำสั่ง with เป็นคำสั่งที่มีไว้สำหรับกำหนดรูปแบบในการตัดฉากหรือรูปแบบในการปรากฏตัวของตัวละครครับ โดยมีหลักการใช้งานดังนี้

"with" คำสั่ง option, ตัวแปร, ฟังก์ชั่น

โดยปกติคำสั่งนี้มักจะนำหน้าหรือตามหลังคำสั่ง show ,hide ,scene
คำสั่ง option ในที่นี้นั้นเราจะรวมไปถึงตัวแปรต่างๆที่เราสามารถระบุค่าที่ต้องการจะปรับแต่งค่าต่างๆที่อยู่นอกเหนือจากนี้ได้โดยใช้ function ที่กำหนดมาให้ ฟังก์ชั่นและ optionต่างๆนั้นมีดังนี้

None <--- กำหนดว่าไม่ต้องทำอะไร
Pause(time) <---- เป็นฟังก์ชั่นที่บอกให้หยุดรอก่อนโดยตัวแปร time คือจำนวนของวินาทีที่เราต้องการที่จะหยุดรอ 
Fade(out_time, hold_time, in_time,color = '# ค่าของสี เลขฐาน16') <--- เป็นฟังชั่นที่ใช้กำหนดให้แสดง BackGround เป็นสีต่างๆที่เราต้องการก่อนแล้วค่อยทำการแสดงภาพที่เราต้องการตามขึ้นมาโดยที่ถ้าเราไม่ใส่ค่าอะไรจะให้ค่าดีฟอลเป็น สี background เป็นสีดำ เวลาในการขึ้น Background เป็น 0.5 เวลาที่ใช้ในการแสดงสี Background เป็น 0และเวลาในการแสดงภาพที่เราต้องการจะเป็น 0.5 โดยที่ค่าพารามิเตอร์ต่างๆมีความหมายดังนี้
out_time คือ เวลาในการขึ้น Background
hold_time คือ เวลาที่ใช้ในการแสดงสี Background
in_time คือ เวลาที่เปลี่ยนจาก background มาป็นรูปปกติ
color = '# ค่าของสี เลขฐาน16' คือ สีของ backgroundที่เราต้องการ
หากเราต้องการใช้เป็นแบบดีฟอลให้เรียกใช้เป็นคำสั่ง fade แทน 

ตัวอย่างการใช้งาน เช่น

    show eileen happy
    with Fade(0.3,0,0.5,color = '#FFFFFF') ####<--- จะได้เป็นแฟรชสีขาว

หรือ
    show eileen happy
    with fade ####<---- ในกรณีที่ไม่ต้องการจะกำหนดค่าอะไรใช้เป็นค่าดีฟอลแทน

Dissolve(time) <--- จะค่อยๆปรากฏภาพขึ้นมาตามเวลาที่เรากำหนดในวงเล็บ มีหน่วยเป็นวินาที หากไม่กำหนดค่าในวงเล็บ จะให้ค่าดีฟอลเป็น 0.5 วินาทีถ้าเราต้องการใช้เป็นแบบดีฟอลให้เรียกใช้เป็นคำสั่ง dissolve แทน

ตัวอย่างการใช้งาน เช่น
    show eileen happy
    with Dissolve(10) ####<---- ใช้เวลา 10 วินาทีในการปรากฏภาพขึ้นมา 


หรือ
    show eileen happy
    with dissolve ####<---- ตั้งค่าดีฟอลโดยกำหนดให้ใช้เวลา 0.5 วินาทีในการปรากฏภาพขึ้นมา

pixellate <---- ทำเป็นภาพโมเสกก่อนจากนั้นก็จะค่อยๆกลับมาเป็นภาพแบบปกติ
move <--- เป็นการกำหนดให้รูปนั้นเลื่อนไปยังตำแหน่งที่เราต้องการโดยปกติจะนิยมใช้ร่วมกับคำสั่ง at (จะกล่าวในหัวข้อถัดไป)
ตัวอย่างการใช้งาน เช่น
    show eileen happy
    with move ####<---- หากว่าเราต้องการที่จะเลื่อนตำแหน่งเราต้องใช้คำสั่งmove 
              ####      กำหนดไปทั้งตำแหน่งเริ่มและตำแหหน่งจบเลยครับ
    show eileen happy at left
    with move ####<----- จะเป็นการเลื่อนภาพจากตรงกลางมายังด้านซ้ายของจอ

moveinright, moveinleft, moveintop, moveinbottom <---- สั่งให้รูปที่กำหนดวิ่งเข้ามาจากนอกจอสู่ในจอทางด้าน ขวา / ซ้าย / บน และ ล่าง ตามลำดับ โดยปกติจะใช้ร่วมกับคำสั่ง show หรือ scene 
moveoutright, moveoutleft, moveouttop, moveoutbottom <---- สั่งให้รูปที่กำหนดวิ่งออกไปจากจอโดยวิ่งออกไปทาง ขวา / ซ้าย / บน และ ล่าง ตามลำดับ โดยปกติจะใช้ร่วมกับคำสั่ง hide
zoomin <---- ค่อยๆขยายจนกลายเป็นขนาดปกติ (ประมาณว่าผุดขึ้นมา)
zoomout <---- ค่อยๆหดตัวจนกลายเป็นหายไปเลย
zoominout <---- ให้ผลเหมือนกับ zoomin กับ zoomout หมายความว่า หากเราใช้กับคำสั่ง show หรือ scenc จะได้ผลออกมาเป็น zoomin แต่ว่าหากใช้กับคำสั่ง hide จะให้ผลออกมาเป็น zoomout
vpunch <---- เขย่าขึ้นลง
hpunch <---- เขย่าซ้ายขวา
blinds <---- เป็นการตัดฉากโดยมีลักษณะการตัดฉากเป็นแบบเปิดม่านเป็นซี่ๆ
squares <---- เป็นการตัดฉากโดยมีลักษณะการตัดฉากเป็นแบบเป็นบล็อคสี่เหลี่ยมหลายๆบล็อคขึ้นมา
wiperight <---- ตัดฉากใหม่แบบเปิดม่านไปทางขวา
wipeleft <---- ตัดฉากใหม่แบบเปิดม่านไปทางซ้าย
wipeup <---- ตัดฉากใหม่แบบเปิดม่านขึ้นข้างบน
wipedown <---- ตัดฉากใหม่แบบเปิดม่านลงข้างล่าง
slideright <---- ตัดฉากใหม่แบบเลื่อนแผ่นภาพใหม่เข้ามาทางขวา
slideleft <---- ตัดฉากใหม่แบบเลื่อนแผ่นภาพภาพใหม่เข้ามาทางซ้าย
slideup <---- ตัดฉากใหม่แบบเลื่อนแผ่นภาพใหม่มาจากข้างล่าง
slidedown <---- ตัดฉากใหม่แบบเลื่อนแผ่นภาพใหม่มาจากข้างบน
slideawayright <---- ตัดฉากใหม่แบบเลื่อนแผ่นภาพเก่าออกไปทางขวา
slideawayleft <---- ตัดฉากใหม่แบบเลื่อนแผ่นภาพเก่าออกไปทางซ้าย
slideawayup <---- ตัดฉากใหม่แบบเลื่อนแผ่นภาพเก่าออกไปทางด้านบน
slideawaydown <---- ตัดฉากใหม่แบบเลื่อนแผ่นภาพเก่าออกไปทางด้านล่าง
irisout <---- ตัดฉากใหม่แบบเป็นสี่เหลี่ยมขยายวงออกไป
irisin <---- ตัดฉากใหม่แบบเป็นสี่เหลี่ยมหดตัวเข้ามา

นอกจากนี้เรายังสามารถที่จะกำหนดลักษณะการตัดฉากตามที่เราต้องการได้อีกด้วย โดยใช้ฟังก์ชั่น ImageDissolve
ฟังก์ชั่น ImageDissolve นั้นจะเป็นการกำหนดให้เปลี่ยนจากภาพเก่าเป็นภาพใหม่โดยการใช้รูปภาพตามที่เราสร้างขึ้นมาเองครับ โดยมันจะเริ่มขึ้นฉากใหม่ โดยจะเริ่มเปลี่ยนฉากใหม่จากที่มันเป็นสีขาวก่อนน่ะครับหลังจากนั้นก็จะค่อยๆไล่เปลี่ยนฉากใหม่ตามความเข้มของสีไปจนเป็นสีดำ (เอาง่ายๆนะว่าเราต้องใช้ภาพขาวดำในการกำหนดละกัน) มีลักษณะการใช้งานดังนี้

ImageDissolve (image, time, ramplen, reverse=False)


โดยพารามิเตอร์แต่ละตัวมีความหมายดังนี้
image <---- รูปขาวดำที่ต้องการ 
time <---- เวลาทั้งหมดที่ใช้ในการตัดฉาก
ramplen <---- จากตามที่แปลมันหมายถึงจำนวนพิกเซลที่ใช้ในการไล่สี(ไม่แน่ใจนะ) แต่ที่ทดลองมามันเป็นการกำหนดค่าความสมูทในการไล่สีอ่ะครับ ถ้ายิ่งมีค่ามากก็จะดูนุ่มนวลมากขึ้นเวลาที่ตัดฉาก ถ้ากำหนดค่าน้อยๆก็จะตัดฉากใหม่แบบแข็งๆแต่เร็ว
reverse=False <---- ถ้าเป็น True จะเป็นการไล่เปลี่ยนฉากใหม่โดยจะเริ่มเปลี่ยนจากสีดำก่อนแล้วค่อยๆไล่เปลี่ยนไปจนถึงสีขาวแทน

ตัวอย่างการใช้งาน

    $ circleirisin = ImageDissolve("id_circleiris.png", 1.0, 8, reverse=True)
    show eileen happy
    with dissolve
    scene black
    with circleirisin


หรือเราจะใช้เป็นอย่างงี้ก็ได้
    show eileen happy
    with dissolve
    scene black
    with ImageDissolve("id_circleiris.png", 1.0, 8, reverse=True)

          COUNTER