じ☆ve冰风 发表于 2024-4-19 18:29:08

【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]
查看完整版本: 【for Developer】标签窗体 悲情物一枚