【for Developer】标签窗体 悲情物一枚
实现类似于古书的效果,请合理使用,否则会出现下方的悲情效果。注意!
单纯是右边的列表,和左边的技能那些无关
#===============================================================================# ■ 标签窗体# LabelWindow#-------------------------------------------------------------------------------# 提供给脚本开发者,一个用于创建图文结合的标签窗体的脚本。## * 使用方法:# obj = Window_Lable.new(x, y, w, h, text, icon)## * 注意事项# ① 字体属性一旦被改变就会刷新;# ② 字体属性的 setter 不负责检查参数。#-------------------------------------------------------------------------------# 更新作者: DeathKing# 许可协议: FSL# 项目版本: 1.1.1211# 引用网址: #-------------------------------------------------------------------------------# - 1.1.1211 By DeathKing# * 修正了 font_name= 方法的错误;## - 1.0.1031 By DeathKing# * 初版;##===============================================================================$fscript = {} if $fscript == nil$fscript["LabelWindow"] = "1.1.1211"#-------------------------------------------------------------------------------# ▼ 通用配置模块#-------------------------------------------------------------------------------module FSLmodule LabelWindow DEFAULT_FONT = "黑体" DEFAULT_SIZE = 22 DEFAULT_COLOR = Color.new(255, 255, 255, 255) DEFAULT_ITALIC= false DEFAULT_BOLD = falseendend#==============================================================================# ■ Window_Label#------------------------------------------------------------------------------# 用于创造一个类似于标签的窗口#==============================================================================class Window_Label < Window_Base include FSL::LabelWindow WLH = 32 attr_reader :x, :y, :w, :h, :text, :iconattr_reader :italic, :bold, :font_name, :color, :size#--------------------------------------------------------------------------# ● 初始化对象# x : 窗体的x坐标# y : 窗体的y坐标# w : 窗体的宽度# h : 窗体的高度# text: 标签文本# icon: 存放在icons文件夹下的图标文件名#--------------------------------------------------------------------------def initialize(x,y,w,h,text,icon="") # 为实变量赋值 @x,@y,@w,@h,@text,@icon = x,y,w,h,text,icon super(x,y,w,h) # 创建窗体 self.contents = Bitmap.new(width - 32, height - 32) # 设置字体属性 self.contents.font.name = DEFAULT_FONT self.contents.font.size = DEFAULT_SIZE self.contents.font.color= DEFAULT_COLOR self.contents.font.bold = DEFAULT_BOLD self.contents.font.italic = DEFAULT_ITALIC # 刷新内容 refreshend#--------------------------------------------------------------------------# ● 刷新#--------------------------------------------------------------------------def refresh # 清除以前创造的位图 self.contents.clear # 初始化坐标 x,y = 0,0 # 如果指定了图标 if @icon != "" rect = Rect.new(x, y, 32, 32) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) bitmap = RPG::Cache.icon(@icon) opacity = self.contents.font.color == normal_color ? 255 : 128 self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity) x = 32 end # 绘制文本 self.contents.draw_text(x,y,@text.size*32,WLH,@text)end #refresh#--------------------------------------------------------------------------# ● 一旦标签文本改变就刷新#--------------------------------------------------------------------------def text=(value) @text = value refreshend#--------------------------------------------------------------------------# ● 一旦被指定为斜体就刷新#--------------------------------------------------------------------------def italic=(value) self.contents.font.italic = value refreshend#--------------------------------------------------------------------------# ● 一旦被指定为粗体就刷新#--------------------------------------------------------------------------def bold=(value) self.contents.font.bold = value refreshend#--------------------------------------------------------------------------# ● 一旦修改了字体名称就刷新#--------------------------------------------------------------------------def font_name=(value) self.contents.font.name = value refreshend#--------------------------------------------------------------------------# ● 一旦修改了字体大小就刷新#--------------------------------------------------------------------------def size=(value) self.contents.font.size = value refreshend#--------------------------------------------------------------------------# ● 一旦修改了字体颜色就刷新#--------------------------------------------------------------------------def color=(value) self.contents.font.color = value refreshend end复制代码
本帖来自P1论坛作者DeathKing,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=159793若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
页:
[1]