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

Project1

 找回密码
 注册会员
搜索
查看: 3812|回复: 4
打印 上一主题 下一主题

[原创发布] 【新】音乐播放系统(分段获取!)

[复制链接]

Lv1.梦旅人

小小的百鬼夜行<

梦石
0
星屑
54
在线时间
579 小时
注册时间
2010-7-29
帖子
2682

贵宾

跳转到指定楼层
1
发表于 2010-10-17 09:53:47 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 退屈£无聊 于 2010-10-17 09:55 编辑

何为分段获取?
意思是指你在剧情一开始拿一个音乐,剧情更多一点再增加一个,比方说像是个音乐收集器。
用变量直接调用效果不错哟。
事实上是后知后觉前辈的一个想法。本来这个方法遥遥无期的说。
仅仅是对音乐播放器的一个分支更新。
  1. #-------------------------------------------------------------------------------
  2. # ·音乐选择播放器  By 退屈£无聊
  3. #-------------------------------------------------------------------------------
  4. # 呃。无聊写个东西玩先。 Update 分支之 音乐分段获取装载
  5. # 介绍说明。音乐的设置格式 @music[*] = [名称,文件名, 简介],注意文字要加引号!
  6. # 这个是根据后知后觉的思路制作的另一种版本,也就是在游戏里不断获取音乐,然后有一
  7. # 个特定的Scene进行加载。
  8. # 不过,你的音乐一定要按顺序记载哦。
  9. $是否退出关闭音乐 = true
  10. #-------------------------------------------------------------------------------
  11. class Scene_Music
  12. #===================================================
  13. # ·主过程
  14. #===================================================
  15.   def initialize(musics)
  16.     @music = []
  17.     @music[1] = ["名称", "文件名", "简介"]
  18.     @music[2] = ["名称", "文件名", "简介"]
  19.     @music[3] = ["名称", "文件名", "简介"]
  20.     @musicdoc = []
  21.     @musicname = []
  22.     for i in 1..musics
  23.       if @music[i] != nil and i > 0
  24.         @musicdoc.push(@music[i])
  25.         @musicname.push(@music[i][1])
  26.       end
  27.     end
  28.   end
  29. #===========配合可恶的main,万恶的main!!!!
  30.     def main
  31.     @music_command = Window_Command.new(200, @musicname)
  32.     @music_command.x = 0
  33.     @music_command.y = 0
  34.     @music_command.opacity = 150
  35.     @music_command.z = 9999
  36.     @help_window = Window_MusicHelp.new
  37.     @help_window.x = 200
  38.     @help_window.y = 0
  39.     @help_window.width = 440
  40.     @help_window.height = 480
  41.     @help_window.opacity = 150
  42.     @help_window.z = 9999
  43.     # 执行过渡
  44.     Graphics.transition
  45.     # 主循环
  46.     loop do
  47.       # 刷新游戏画面
  48.       Graphics.update
  49.       # 刷新输入信息
  50.       Input.update
  51.       # 刷新画面
  52.       choose_music(@musicdoc)
  53.       # 如果画面被切换的话就中断循环
  54.       if $scene != self
  55.         break
  56.       end
  57.     end
  58.     # 准备过渡
  59.     Graphics.freeze
  60.     # 释放窗口
  61.     @music_command.dispose
  62.     @help_window.dispose
  63.   end
  64. #==========================================================================
  65. # ·选歌过程
  66. #==========================================================================
  67. def choose_music(music)
  68.   @music_command.update
  69.   @help_window.update
  70.   @musicfile = music
  71.   if Input.trigger?(Input::B)
  72.     $scene = Scene_Map.new
  73.     if $是否退出关闭音乐
  74.     $game_map.autoplay
  75.     end
  76.   end
  77.   if Input.trigger?(Input::C)
  78.     @music_name = "#{@musicfile[@music_command.index][1]}"
  79.     Audio.bgm_play("Audio/BGM/" + @music_name , 84, 0)
  80.   end
  81.   @help_window.draw_music("#{@musicfile[@music_command.index][2]}")
  82. end
  83. # 透明部分
  84. module XRXS_MP7_Module
  85.   def create_spriteset
  86.     @spriteset = Spriteset_Map.new
  87.   end
  88.   def dispose_spriteset
  89.     @spriteset.dispose
  90.   end
  91. end
  92.   include XRXS_MP7_Module
  93.   alias xrxs_mp7_main main
  94.   def main
  95.     create_spriteset
  96.     xrxs_mp7_main
  97.     dispose_spriteset
  98.   end
  99.   #
  100. end
  101. #==============================================================================
  102. # ■ Window_Music
  103. #------------------------------------------------------------------------------
  104. #  音乐简介显示窗口。
  105. #==============================================================================

  106. class Window_MusicHelp < Window_Base
  107.   #--------------------------------------------------------------------------
  108.   # ● 初始化对像
  109.   #--------------------------------------------------------------------------
  110.   def initialize
  111.     super(240, 0, 400, 480)
  112.     self.contents = Bitmap.new(self.width - 32, self.height - 32)
  113.   end
  114.   #--------------------------------------------------------------------------
  115.   # ● 描绘音乐
  116.   #--------------------------------------------------------------------------
  117.   def draw_music(music)
  118.     self.contents.clear
  119.     # 记录文字x坐标
  120.     x = 0
  121.     # 记录文字y坐标
  122.     y = 0
  123.     # 记录换行时y坐标最小加值
  124.     min_y = 0
  125.     self.contents.font.color = normal_color
  126.     # 描绘音乐简介
  127.     text = music
  128.     # 限制文字处理
  129.     begin
  130.       last_text = text.clone
  131.       text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  132.     end until text == last_text
  133.     text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  134.       $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  135.     end
  136.     # c 获取 1 个字 (如果不能取得文字就循环)
  137.     while ((c = text.slice!(/./m)) != nil)
  138.       # 另起一行文字的情况下
  139.       if c == "\n"
  140.         y += [32, min_y].max
  141.         min_y = 0
  142.         x = 0
  143.         # 下面的文字
  144.         next
  145.       end
  146.       # 自动换行处理
  147.       if x + self.contents.text_size(c).width > self.contents.width
  148.         y += [32, min_y].max
  149.         min_y = 0
  150.         x = 0
  151.       end
  152.       # 描绘文字
  153.       self.contents.draw_text(4 + x, y, 40, 32, c)
  154.       # x 为要描绘文字的加法运算
  155.       x += self.contents.text_size(c).width
  156.     end
  157.   end
  158. end
复制代码
方法还是比较沉冗复杂化的,尤其是运行起来速率真不怎么样- -
某只PHP/HTML小白鼠→退屈の间


Cause I knew you were trouble when you walked in
So shame is on me now
I flow me to place i ve never been
till you put me down oh
Now Im lying on the cold hard ground

Lv1.梦旅人

小小的百鬼夜行<

梦石
0
星屑
54
在线时间
579 小时
注册时间
2010-7-29
帖子
2682

贵宾

5
 楼主| 发表于 2010-10-17 17:24:24 | 只看该作者
回复 越前リョーマ 的帖子
没错哟.
某只PHP/HTML小白鼠→退屈の间


Cause I knew you were trouble when you walked in
So shame is on me now
I flow me to place i ve never been
till you put me down oh
Now Im lying on the cold hard ground
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (暗夜天使)

名侦探小柯

梦石
10
星屑
4248
在线时间
3732 小时
注册时间
2006-9-6
帖子
37430

极短27获奖MZ评测员开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

4
发表于 2010-10-17 12:37:05 | 只看该作者
音乐鉴赏图鉴?
不定期回归 ~ 游戏开发之旅
———————————————————————————————
回复 支持 反对

使用道具 举报

Lv1.梦旅人

剑仙·影羽

梦石
0
星屑
172
在线时间
224 小时
注册时间
2010-3-20
帖子
1580
3
发表于 2010-10-17 12:27:43 | 只看该作者
我想问这个版本有没有让光标能够滚动翻页的功能
好像无法播放第十几行的音乐

点评

应该可以的吧.  发表于 2010-10-17 17:23
应该可以的吧.  发表于 2010-10-17 17:23

——至今为止,谁也没能分析出他们为什么会因为说了这些话而死。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

可以吃的头衔

梦石
0
星屑
1015
在线时间
424 小时
注册时间
2010-10-17
帖子
602
2
发表于 2010-10-17 09:56:13 | 只看该作者
我先来坐个沙发~~
分段获取倒是很有爱,我以前都是转成WMA的~~
……
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2026-6-10 19:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表