รูปตัวอย่างจากเกม the Hero (วิธีทำ รวมบทที่4 กับบทนี้ เข้าด้วยกัน)
การจะใส่รูปใน Window ที่เราสร้างสามารถทำได้ 2 วิธีคือ
1.ใช้วิธีเดียวกับการใช้คำสั่งโชว์รูปภาพ แต่ใช้วิธีเรียกด้วยสคริปแทนการเขียนตัวหนังสือว่า[hide]
$game_screen.pictures[หมายเลขรูป].show( "ชื่อรูป", จุดอ้างอิง, แกนx, แกนy, ความยาว, ความสูง, ความโปร่งใส, ความกลมกลืน)
โดยหมายเลขรูป = เหมือนกับคำสั่งโชว์รูปภาพ คือ ใช้ได้ตั้งแต่ 1-50 เท่านั้น (เกินกว่านี้จะแฮ้ง)
ชื่อรูป = ชื่อไฟล์รูปในโพลเดอร์ Pictures
จุดอ้างอิง= ตำแหน่งวางรูป (0=ซ้ายมุมของรูป 1=กึ่งกลางรูป)
แกนx = ตำแหน่งแกน x
แกนy = ตำแหน่งแกน y
ความยาว = ความยาวของรูปคิดเป็น % (100 คือขนาดปกติ)
ความสูง = ความสูงของรูปคิดเป็น % (100 คือขนาดปกติ)
ความโปร่งใส = ความโปร่งใสของรูปใช้ได้ตั้งแต่ 0-255 (255 คือเห็นชัดปกติ)
ความกลมกลืน = เมื่อใส่เลขด้านล่างจะเป็นภาพชนิดนั้น
0=ปกติ 1=กลมกลืน(สีสว่างๆ) 2=ผสมผสาน(สีดำๆ)[/hide]
ถ้าเทียบกับคำสั่งโชว์รูปจะได้ดังนี้
ตัวอย่างสคริป[hide]
class Window_Status1 < Window_Base
# ------------------------
def initialize
super(0, 0, 250, 128) # ตำแหน่ง และขนาดของ Window
self.contents = Bitmap.new(width - 32, height - 32)
self.opacity = 160 # กรอบ Window
refresh
end
# ------------------------
def refresh
self.contents.clear
$game_screen.pictures[1].show( "o39", 0, 16, 16, 100, 100, 255, 0)
self.contents.font.color = system_color
self.contents.draw_text( 128, 0, 255, 64, "HP")
self.contents.draw_text( 128, 32, 255, 64, "SP")
self.contents.font.color = normal_color
self.contents.draw_text( 128, 16, 255, 64, $game_party.actors[0].hp.to_s+"/"+$game_party.actors[0].maxhp.to_s)
self.contents.draw_text( 128, 48, 255, 64, $game_party.actors[0].sp.to_s+"/"+$game_party.actors[0].maxsp.to_s)
end
# ------------------------
end
[/hide]บรรทัดที่ใช้เรียกรูปคือ [hide]
$game_screen.pictures[1].show( "o39", 0, 16, 16, 100, 100, 255, 0)[/hide]
คำสั่งอื่นๆ
[hide]ลบรูป
$game_screen.pictures[หมายเลขรูป].erase
เลื่อนรูป$game_screen.pictures[หมายเลขรูป].move( เวลา, จุดอ้างอิง, แกนx, แกนy, ความยาว, ความสูง, ความโปร่งใส, ความกลมกลืน)
หมุนรูป$game_screen.pictures[หมายเลขรูป].rotate(องศา)
[/hide]..
2.การเรียกรูปจากโพลเดอร์ต่างๆ เป็นการเรียกใช้ไฟล์ภาพจากโฟลเดอร์ Graphics อันไหนก็ได้มาแสดงใน Window
โดยสามารถเรียกโดยใช้สคริปดังนี้
[hide]bitmap = RPG::Cache.โฟลเดอร์ที่ต้องการ("ชื่อรูป")
src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
self.contents.blt(แกน x, แกน y, bitmap, src_rect)
โดย
bitmap = ชื่อรูปที่เราสมมุติขึ้น(จะตั้งชื่ออะไรก็ได้ แต่ต้องใส่ให้ครบทั้ง 4 ตำแหน่ง)
โฟลเดอร์ที่ต้องการ = ใส่โฟลเดอร์ที่ต้องการเรียกใช้รูป เช่น character,icon,picture ฯลฯ
(ตัวแรกต้องเป็นตัวพิมพ์เล็ก และไม่ต้องใส่ s ต่อท้าย)
ชื่อรูป = ชื่อไฟล์รูปที่อยู่ในโพลเดอร์นั้นๆ
src_rect = ขนาดของรูปที่โชว์ (จุดเริ่มโชว์แกน x,จุดเริ่มโชว์แกน y,ความกว้่างรูป,ความสูงรูป)
bitmap.width = ความกว้่างรูป(เท่าขนาดรูป)
bitmap.height = ความสูงรูป(เท่าขนาดรูป)
แกนx = ตำแหน่งแกน x
แกนy = ตำแหน่งแกน y[/hide]
ตัวอย่างสคริป[hide]
class Window_Status2 < Window_Base
# ------------------------
def initialize
super(0, 0, 250, 128) # ตำแหน่ง และขนาดของ Window
self.contents = Bitmap.new(width - 32, height - 32)
self.opacity = 160 # กรอบ Window
refresh
end
# ------------------------
def refresh
self.contents.clear
bitmap = RPG::Cache.picture("o39")
src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
self.contents.blt(0, 0, bitmap, src_rect)
self.contents.font.color = system_color
self.contents.draw_text( 128, 0, 255, 64, "HP")
self.contents.draw_text( 128, 32, 255, 64, "SP")
self.contents.font.color = normal_color
self.contents.draw_text( 128, 16, 255, 64, $game_party.actors[0].hp.to_s+"/"+$game_party.actors[0].maxhp.to_s)
self.contents.draw_text( 128, 48, 255, 64, $game_party.actors[0].sp.to_s+"/"+$game_party.actors[0].maxsp.to_s)
end
# ------------------------
end
[/hide]บรรทัดที่ใช้เรียกรูปคือ
[hide]bitmap = RPG::Cache.picture("o39")
src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
self.contents.blt(0, 0, bitmap, src_rect)
[/hide]
ข้อดี&ข้อเสีย
วิธีที่1
ข้อดี
1.ใช้งานง่ายเพราะเหมือนคำสั่งโชว์รูป
2.สามารถโชว์รูปที่ตำแหน่งไหนก็ได้
3.สามารถใช้คำสั่ง ลบรูปภาพ ลบรูปได้ทันที
4.สามารถปรับความโปร่งใส่ หมุนรูป ปรับขนาด หรือ ความกลมกลืน ได้ง่าย
ข้อเสีย
1.จำกัดจำนวนสูงสุดที่ 50 รูป
2.รูปอาจจะบังตัวหนังสือใน Window ที่เราสร้าง
3.ถ้าไม่ใช้คำสั่ง ลบรูปภาพ หลังลบ Window รูปจะคาอยู่อย่างนั้น
4.หมายเลขรูปภาพอาจซ้ำกันได้ถ้าจำไม่ดี
5.เรียกภาพได้จากโพลเดอร์ Pictures เท่านั้น
วิธีที่2
ข้อดี
1.เมื่อลบวินโดว์จะลบรูปภาพอัตโนมัติ
2.ไม่จำกัดจำนวนรูปภาพ
3.เรียกภาพจากโพลเดอร์ใดก็ได้
ข้อเสีย
1.วิธีใช้ค่อนข้างยุ่งยากกว่า
2.ปรับ ความโปร่งใส/กลมกลืน ไม่ได้
3.หมุนภาพไม่ได้
4.ลบรูประหว่าเปิด Window ไม่ได้
5.รูปภาพจะแสดงได้เฉพาะ Window ที่เราสร้างเท่านั้น(เกินกว่านั้นภาพจะแหว่งไป)
ตย.การโชว์รูปใน WD
[hide]http://www.mediafire.com/?gyhaizdgrjh[/hide]
กด Q เพื่อเรียก Window แบบที่ 1 (กดอีกทีเพื่อปิด)
กด W เพื่อเรียก Window แบบที่ 2 (กดอีกทีเพื่อปิด)
Special Thank : shinryu
[สอน] การเขียน Script อย่างง่ายๆ บทที่ 5 การใส่รูปภาพใน Window