设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
Project1 查看内容

跳转地图时华丽动画显示地图名

2008-12-20 00:02| 发布者: 御灵| 查看: 6544| 评论: 0|原作者: 沉影不器|来自: 点此进入发布帖

摘要: 跟现有的地图名不同在于:指定时间后渐隐消失功能: 在初进地图时,渐显地图名,随后渐隐截图:新增显示动画的能力,喜欢自定义显示图片的话,请将所需图片制作成动画 #==================================

跟现有的地图名不同在于:指定时间后渐隐消失

功能: 在初进地图时,渐显地图名,随后渐隐

截图:




新增显示动画的能力,喜欢自定义显示图片的话,请将所需图片制作成动画







#==============================================================================
# 跳转地图时显示地图名 by 沉影不器
#------------------------------------------------------------------------------
# 功能: 在初进地图时,渐显地图名,随后渐隐
#       对于不需要显示地图名的地图,请在地图名里添加字符"@"
#       自定义各个地图名显示动画: 在地图名后加"_数字"
#       例: "戈壁_1"表示此地图显示的地图名为"戈壁",使用1号动画
#==============================================================================
# ■ Spriteset_Map
#==============================================================================
class Spriteset_Map
  #--------------------------------------------------------------------------
  # ● 参数
  #--------------------------------------------------------------------------
  # 基本设定
  MAX_OPACITY = 192                      # 最大不透明度
  SHOW_COUNT = 120                       # 显示时间(均以帧为单位)
  TRANS_COUNT = 60                       # 渐变时间
  NAME_WIN_WIDTH = 192                   # 名称窗体宽度
  NAME_WIN_HEIGHT = 56                   # 名称窗体高度
 
  # 美化选项
  FONT_SIZE = 20                         # 名称字体大小
  FONT_COLOR = Color.new(255,255,255)    # 名称字体颜色
  FONT_SHADOW = true                     # 名称字体是否描绘阴影
  SKIN = "Booky_Skin"                    # 名称窗体自定义皮肤(空字符时隐藏窗体)
  ANIMATION_ID = 32                      # 显示名称时的动画 ID(0以下为无动画)
  #--------------------------------------------------------------------------
  # ● 初始化对象
  #--------------------------------------------------------------------------
  alias ini initialize
  def initialize
    # 获取地图名
    name = get_map_name($game_map.map_id)
    if $game_temp.old_map_name != name
      $game_temp.old_map_name = name
      unless name.include? "@"
        create_name_window
      end
    end
    ini
  end
  #--------------------------------------------------------------------------
  # ○ 生成名窗体
  #--------------------------------------------------------------------------
  def create_name_window
    # 初始化参数
    @show_count = SHOW_COUNT
    @trans_count_1 = TRANS_COUNT
    @trans_count_2 = TRANS_COUNT
    animation_id = get_animation_id($game_map.map_id)
    animation_id = ANIMATION_ID if animation_id <= 0
    # 显示动画
    @name_animation = Sprite_Base.new(@viewport2)
    @name_animation.x = Graphics.width/2
    @name_animation.y = Graphics.height/2
    if animation_id > 0
      animation = $data_animations[animation_id]
      if animation != nil
        @name_animation.start_animation(animation)
      else
        p '指定动画不存在!'
      end
    end
    x = (Graphics.width - NAME_WIN_WIDTH)/2
    y = (Graphics.height - NAME_WIN_HEIGHT)/2
    # 生成窗体
    @name_window = Window_Base.new(x, y, NAME_WIN_WIDTH, NAME_WIN_HEIGHT)
    @name_window.windowskin = Cache.system(SKIN)
    @name_window.contents.font.size = FONT_SIZE
    @name_window.contents.font.color = FONT_COLOR
    @name_window.contents.font.shadow = FONT_SHADOW
    @name_window.viewport = @viewport3
    @name_window.opacity = 0
    @name_window.contents_opacity = 0
    # 地图名
    text = $game_temp.old_map_name
    @name_window.contents.draw_text(0,0,NAME_WIN_WIDTH-32,FONT_SIZE+4,text,1)
  end
  #--------------------------------------------------------------------------
  # ○ 获取地图名
  #     map_id : 地图 ID
  #--------------------------------------------------------------------------
  def get_map_name(map_id)
    mapinfo = load_data("Data/MapInfos.rvdata")
    result = mapinfo[map_id].name
    return result.split(/,/)[0].split(/_/)[0]
  end
  #--------------------------------------------------------------------------
  # ○ 获取动画 ID
  #     map_id : 地图 ID
  #--------------------------------------------------------------------------
  def get_animation_id(map_id)
    mapinfo = load_data("Data/MapInfos.rvdata")
    result = mapinfo[map_id].name
    return result.split(/,/)[0].split(/_/)[1].to_i
  end
  #--------------------------------------------------------------------------
  # ○ 更新名窗体
  #--------------------------------------------------------------------------
  def update_name_window
    return if @name_window == nil
    # 已关闭时不需更新
    return unless @name_window.visible
    # 更新动画
    @name_animation.update
    # 渐现
    if @trans_count_1 >= 0
      @trans_count_1 -= 1
      @name_window.opacity += MAX_OPACITY/TRANS_COUNT
      @name_window.contents_opacity += MAX_OPACITY/TRANS_COUNT
    end
    # 显示时间计数
    if @show_count >=0
      @show_count -= 1
    end
    # 渐隐
    if @show_count <= 0
      if @trans_count_2 > 0
        @trans_count_2 -= 1
        @name_window.opacity -= MAX_OPACITY/TRANS_COUNT
        @name_window.contents_opacity -= MAX_OPACITY/TRANS_COUNT
      end
      if @trans_count_2 <= 0
        @name_window.visible = false
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 释放
  #--------------------------------------------------------------------------
  alias old_dispose dispose
  def dispose
    old_dispose
    return if @name_window == nil
    @name_window.dispose
    @name_animation.dispose
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面
  #--------------------------------------------------------------------------
  alias old_update update
  def update
    old_update
    update_name_window
  end
end

#==============================================================================
# ■ Game_Temp
#==============================================================================
class Game_Temp
  #--------------------------------------------------------------------------
  # ● 定义实例变量
  #--------------------------------------------------------------------------
  attr_accessor :old_map_name        # 背景位图
  #--------------------------------------------------------------------------
  # ● 初始化对象
  #--------------------------------------------------------------------------
  alias ini initialize
  def initialize
    ini
    @old_map_name = ""
  end
end

  >>点击此处下载范例工程<<

------------------------------
2008-08-21 更新

① 新增显示动画的能力,喜欢自定义显示图片的话,请将所需图片制作成动画
② 新增字体控制

------------------------------
2008-08-22 更新

① 进入菜单在出来时,不再显示(snstar2006的意见)

------------------------------
2008-08-27 更新

① 修复三个Scene切换时可能跟Graphics.transition的冲突
②  新增隐藏指定某地图不显示地图名的功能,顺便把全局变量都写进Game_Temp
③  兼容 易用型传送点系统


------------------------------
2008-09-09 更新
① 新增地图自定义不同动画的功能,未定义也不影响(41楼drgdrg的提议)

鲜花

刚表态过的朋友 (0 人)

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-26 12:19

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

返回顶部