การเขียน Script อย่างง่ายๆ บทที่ 4 การรวม Scene กับ Window
หน้า 1 จาก 1
การเขียน Script อย่างง่ายๆ บทที่ 4 การรวม Scene กับ Window
จริงๆไม่มีอะไรมากก็แค่วางต่อกันไปเลย เช่น
เรียก ใช้วินโดว์
>>เราสามารถสร้าง วินโดว์มากกว่า 1 อันได้ใน Scene เดียว<<
โดยเราต้องเรียกใช้ให้ครบด้วย เพราะถ้าไม่เรียกใช้มันก็ไม่โชว์นั่นเอง{:2_30:}
การเรียกใช้ Scene
ใช้ คำสั่งเรียกใช้สคริปแล้วเรียกว่า
.
.
กรณีที่เรายังไม่ต้องการให้โชว์วินโดว์ไหน เราสามารถทำได้ โดยใส่โค๊ตว่า
เวลาต้องการโชว์ก็เปลื่ยนจาก false เป็น true
.
.
กรณีที่เรายังต้องการเลือกซ้อนกันหลายๆครั้ง เช่น เรียกสคริปว่าจะฝากหรือถอนเงิน จากนั้นก็แสดงวินโดว์ซ้อนไปว่าจะฝ่ากเท่าไรไปอีกชั้น
(ดูตัวอย่างในลิงค์ด้านล่าง)
เวลาต้องการโช้ก็เปลื่ยนจาก false เป็น true และต้องเปลื่ยน @command_window.active = false(คอมมานตัวหลัก) ให้ปิดด้วย
.
.
ถ้าอยากให้เห็นพื้นหลังเลยไม่ใช้หน้าจอดำๆ ให้ใส่สคริป
**วิธีนี้ใช้ได้กับสคริปเมนูทุกชนิด**
<blockquote>ต.ย.สคริปธนาคาร (แบบกรอกตัวเลขได้ตามใจชอบ)
-เมื่อเลือกว่าจะฝากหรือถอน จะมีตัวเลขขึ้นว่าจะใส่จำนวนเงินเท่าใด
-เมื่อกดเอนเตอร์ ถ้ามีจำนวนเงินถูกต้องจะฝาก/ถอน ได้ทันที</blockquote>
ตย.การใช้ Scene Window
เนื้อหาถูกซ่อน จะแสดงได้ก็ต่อเมื่อคุณทำการแสดงความเห็น
เครดิต : Shinryu
- Code:
class Window_ชื่อที่ต้องการ < Window_Base #ห้ามซ้ำกับชื่อ Window ทีมีอยู่แล้วไม่งั้นมันจะเรียกใช้ Window นี้แทนอันเก่า
# ------------------------
def initialize
super(ตำแหน่งแกนx, ตำแหน่งแกนy, ความกว้าง, ความสูง)
self.contents = Bitmap.new(width - 32, height - 32) #เป็นตำแหน่งแสดงตัวหนังสือ
self.opacity = 255 # ความโปร่งใสของกรอบ (ถ้าไม่อยากมีกรอบก็ตั้งเป็น 0)
self.contents.font.name = $fontface # ชนิดของฟอนท์ที่ใช้
self.contents.font.size = $fontsize # ขนาดของฟอนท์ที่ใช้
self.z = 5 #ลำดับชั้นของกรอบ (ถ้าตั้งเลขมากๆจะบังพวกกรอบเมนูหรือพวเราปภาพได้)
refresh
end#จบ initialize
# ------------------------
def refresh
self.contents.clear
<แสดงเนื้อหาตรงนี้>
end#จบ refresh
# ------------------------
end#จบ class
# ------------------------------------------------------------------------
class Scene_ชื่อที่ต้องการ #ชื่อ Scene ที่ต้องการ
def main
s0 = "เนื้อหา 1"
s1 = "เนื้อหา 2"
s2 = "เนื้อหา 3"
# กำหนดคอมมานว่ามีอะไรบ้าง
# 200คือความกว้างWindow ส่วนเลข s0-3 คือตัวหนังสือตามที่เรากำหนด
@command_window = Window_Command.new(200, [s0, s1, s2])
# ตำแหน่งแกน y ของ command_window
@command_window.y = 64
# เรียกใช้หน้าต่างที่เราสร้างข้างบน
@ชื่อที่ต้องการ_window = Window_ชื่อที่ต้องการ.new
@ชื่อที่ต้องการ_window.x = 128 #ตำแหน่งที่จะวางแกนx
@ชื่อที่ต้องการ_window.y = 0 #ตำแหน่งที่จะวางแกนy
# เรียกใช้หน้าต่าง help
@note_window = Window_Help.new
# เริ่มเรียกใช้ Scene และเรียก window ทั้งหมด
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
#ลบ window ต่างๆเมื่อออก
@command_window.dispose
@ชื่อที่ต้องการ_window.dispose #พิมพ์ตัวนี้เพิ่มเข้ามา
@note_window.dispose
end #จบ main
#--------------------------------------------------------------------------
def update
@ชื่อที่ต้องการ_window.update #เพิ่มตัวนี้ในกรณีที่ต้องการให้หน้าต่างนี้อัพเดทตลอดเวลา
# เมื่อตำแหน่ง เคอเซอร์อยู่ที่ when ใดก็ให้โชว์ข้อความนั้นๆที่ window help
case @command_window.index
when 0
@note_window.set_text("แสดงคำอธิบายเนื้อหา 1", 0)
when 1
@note_window.set_text("แสดงคำอธิบายเนื้อหา 2", 0)
when 2
@note_window.set_text("แสดงคำอธิบายเนื้อหา 3", 0)
end
#อัพเดทตำแหน่งเคอเซอร์
@command_window.update
# เมื่อกด X (ยกเลิก)
if Input.trigger?(Input::B)
# เรียกใช้เสียงเวลากด cancel
$game_system.se_play($data_system.cancel_se)
# ไปหน้าจอ
$scene = Scene_Map.new
# จบการเช็คเมื่อกด X
end
# เมื่อกด C (ตกลง)
if Input.trigger?(Input::C)
# เรียกใช้เสียงเวลากด ตกลง
$game_system.se_play($data_system.decision_se)
# เมื่อตำแหน่ง เคอเซอร์อยู่ที่ when ใดเวลากด C ก็ให้เกิดเหตุการณ์นั้นๆ
case @command_window.index
when 0
เหตุการณ์ 1
when 1
เหตุการณ์ 2
when 2
เหตุการณ์ 3
end
# ตรงนี้อาจมีการเรียกใช้ Scene นี้อีกครั้งเพื่ออัพเดทข้อมูลหลังจากกด C
$scene = Scene_ชื่อที่ต้องการ.new
end
end
end
เรียก ใช้วินโดว์
- Code:
@ชื่อที่ต้องการ_window = Window_ชื่อที่ต้องการ.new
- Code:
@ชื่อที่ต้องการ _window.dispose
- Code:
@ชื่อที่ต้อง การ_window.update
>>เราสามารถสร้าง วินโดว์มากกว่า 1 อันได้ใน Scene เดียว<<
โดยเราต้องเรียกใช้ให้ครบด้วย เพราะถ้าไม่เรียกใช้มันก็ไม่โชว์นั่นเอง{:2_30:}
การเรียกใช้ Scene
ใช้ คำสั่งเรียกใช้สคริปแล้วเรียกว่า
- Code:
$scene = ชื่อ Scene ที่เราตั้งไว้.new
.
.
กรณีที่เรายังไม่ต้องการให้โชว์วินโดว์ไหน เราสามารถทำได้ โดยใส่โค๊ตว่า
- Code:
@ชื่อที่ต้องการ_window.visible = false
เวลาต้องการโชว์ก็เปลื่ยนจาก false เป็น true
.
.
กรณีที่เรายังต้องการเลือกซ้อนกันหลายๆครั้ง เช่น เรียกสคริปว่าจะฝากหรือถอนเงิน จากนั้นก็แสดงวินโดว์ซ้อนไปว่าจะฝ่ากเท่าไรไปอีกชั้น
(ดูตัวอย่างในลิงค์ด้านล่าง)
- Code:
@ชื่อที่ต้องการ_window.active = false #ยังไม่ใช้
เวลาต้องการโช้ก็เปลื่ยนจาก false เป็น true และต้องเปลื่ยน @command_window.active = false(คอมมานตัวหลัก) ให้ปิดด้วย
.
.
ถ้าอยากให้เห็นพื้นหลังเลยไม่ใช้หน้าจอดำๆ ให้ใส่สคริป
- Code:
@map = Spriteset_Map.new
- Code:
def main
- Code:
@map.dispose
**วิธีนี้ใช้ได้กับสคริปเมนูทุกชนิด**
<blockquote>ต.ย.สคริปธนาคาร (แบบกรอกตัวเลขได้ตามใจชอบ)
-เมื่อเลือกว่าจะฝากหรือถอน จะมีตัวเลขขึ้นว่าจะใส่จำนวนเงินเท่าใด
-เมื่อกดเอนเตอร์ ถ้ามีจำนวนเงินถูกต้องจะฝาก/ถอน ได้ทันที</blockquote>
ตย.การใช้ Scene Window
เนื้อหาถูกซ่อน จะแสดงได้ก็ต่อเมื่อคุณทำการแสดงความเห็น
เครดิต : Shinryu
Similar topics
» การเขียน Script อย่างง่ายๆ บทที่ 1 การเขียน Window
» การเขียน Script อย่างง่ายๆ บทที่ 3 การเขียน Scene เมนูต่างๆ
» การเขียน Script อย่างง่ายๆ บทที่ 5 การใส่รูปภาพใน Window
» การเขียน Script อย่างง่ายๆ บทที่ 2 การตรวจเช็คเงื่อนไข
» การเขียน Script อย่างง่ายๆ บทที่ 6 การใช้งาน when (ตัวเลือกต่างๆ)
» การเขียน Script อย่างง่ายๆ บทที่ 3 การเขียน Scene เมนูต่างๆ
» การเขียน Script อย่างง่ายๆ บทที่ 5 การใส่รูปภาพใน Window
» การเขียน Script อย่างง่ายๆ บทที่ 2 การตรวจเช็คเงื่อนไข
» การเขียน Script อย่างง่ายๆ บทที่ 6 การใช้งาน when (ตัวเลือกต่างๆ)
หน้า 1 จาก 1
Permissions in this forum:
คุณไม่สามารถพิมพ์ตอบ