赞 | 3 |
VIP | 32 |
好人卡 | 0 |
积分 | 1 |
经验 | 14756 |
最后登录 | 2021-5-30 |
在线时间 | 579 小时 |
Lv1.梦旅人 小小的百鬼夜行<
- 梦石
- 0
- 星屑
- 54
- 在线时间
- 579 小时
- 注册时间
- 2010-7-29
- 帖子
- 2682
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 退屈£无聊 于 2010-10-17 09:55 编辑
何为分段获取?
意思是指你在剧情一开始拿一个音乐,剧情更多一点再增加一个,比方说像是个音乐收集器。
用变量直接调用效果不错哟。
事实上是后知后觉前辈的一个想法。本来这个方法遥遥无期的说。
仅仅是对音乐播放器的一个分支更新。- #-------------------------------------------------------------------------------
- # ·音乐选择播放器 By 退屈£无聊
- #-------------------------------------------------------------------------------
- # 呃。无聊写个东西玩先。 Update 分支之 音乐分段获取装载
- # 介绍说明。音乐的设置格式 @music[*] = [名称,文件名, 简介],注意文字要加引号!
- # 这个是根据后知后觉的思路制作的另一种版本,也就是在游戏里不断获取音乐,然后有一
- # 个特定的Scene进行加载。
- # 不过,你的音乐一定要按顺序记载哦。
- $是否退出关闭音乐 = true
- #-------------------------------------------------------------------------------
- class Scene_Music
- #===================================================
- # ·主过程
- #===================================================
- def initialize(musics)
- @music = []
- @music[1] = ["名称", "文件名", "简介"]
- @music[2] = ["名称", "文件名", "简介"]
- @music[3] = ["名称", "文件名", "简介"]
- @musicdoc = []
- @musicname = []
- for i in 1..musics
- if @music[i] != nil and i > 0
- @musicdoc.push(@music[i])
- @musicname.push(@music[i][1])
- end
- end
- end
- #===========配合可恶的main,万恶的main!!!!
- def main
- @music_command = Window_Command.new(200, @musicname)
- @music_command.x = 0
- @music_command.y = 0
- @music_command.opacity = 150
- @music_command.z = 9999
- @help_window = Window_MusicHelp.new
- @help_window.x = 200
- @help_window.y = 0
- @help_window.width = 440
- @help_window.height = 480
- @help_window.opacity = 150
- @help_window.z = 9999
- # 执行过渡
- Graphics.transition
- # 主循环
- loop do
- # 刷新游戏画面
- Graphics.update
- # 刷新输入信息
- Input.update
- # 刷新画面
- choose_music(@musicdoc)
- # 如果画面被切换的话就中断循环
- if $scene != self
- break
- end
- end
- # 准备过渡
- Graphics.freeze
- # 释放窗口
- @music_command.dispose
- @help_window.dispose
- end
- #==========================================================================
- # ·选歌过程
- #==========================================================================
- def choose_music(music)
- @music_command.update
- @help_window.update
- @musicfile = music
- if Input.trigger?(Input::B)
- $scene = Scene_Map.new
- if $是否退出关闭音乐
- $game_map.autoplay
- end
- end
- if Input.trigger?(Input::C)
- @music_name = "#{@musicfile[@music_command.index][1]}"
- Audio.bgm_play("Audio/BGM/" + @music_name , 84, 0)
- end
- @help_window.draw_music("#{@musicfile[@music_command.index][2]}")
- end
- # 透明部分
- module XRXS_MP7_Module
- def create_spriteset
- @spriteset = Spriteset_Map.new
- end
- def dispose_spriteset
- @spriteset.dispose
- end
- end
- include XRXS_MP7_Module
- alias xrxs_mp7_main main
- def main
- create_spriteset
- xrxs_mp7_main
- dispose_spriteset
- end
- #
- end
- #==============================================================================
- # ■ Window_Music
- #------------------------------------------------------------------------------
- # 音乐简介显示窗口。
- #==============================================================================
- class Window_MusicHelp < Window_Base
- #--------------------------------------------------------------------------
- # ● 初始化对像
- #--------------------------------------------------------------------------
- def initialize
- super(240, 0, 400, 480)
- self.contents = Bitmap.new(self.width - 32, self.height - 32)
- end
- #--------------------------------------------------------------------------
- # ● 描绘音乐
- #--------------------------------------------------------------------------
- def draw_music(music)
- self.contents.clear
- # 记录文字x坐标
- x = 0
- # 记录文字y坐标
- y = 0
- # 记录换行时y坐标最小加值
- min_y = 0
- self.contents.font.color = normal_color
- # 描绘音乐简介
- text = music
- # 限制文字处理
- begin
- last_text = text.clone
- text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
- end until text == last_text
- text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
- $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
- end
- # c 获取 1 个字 (如果不能取得文字就循环)
- while ((c = text.slice!(/./m)) != nil)
- # 另起一行文字的情况下
- if c == "\n"
- y += [32, min_y].max
- min_y = 0
- x = 0
- # 下面的文字
- next
- end
- # 自动换行处理
- if x + self.contents.text_size(c).width > self.contents.width
- y += [32, min_y].max
- min_y = 0
- x = 0
- end
- # 描绘文字
- self.contents.draw_text(4 + x, y, 40, 32, c)
- # x 为要描绘文字的加法运算
- x += self.contents.text_size(c).width
- end
- end
- end
复制代码 方法还是比较沉冗复杂化的,尤其是运行起来速率真不怎么样- - |
|