Project1

标题: 音乐鉴赏脚本增加标注和进度条的问题,请大家帮忙 [打印本页]

作者: 闪电    时间: 2008-9-15 08:20
标题: 音乐鉴赏脚本增加标注和进度条的问题,请大家帮忙
我现在使用的是论坛找到的一个音乐鉴赏的帖子的脚本
  1. class Scene_Music
  2. #--------------------------------------------------------------------------
  3. # ● 主处理
  4. #--------------------------------------------------------------------------
  5. def main
  6.    # 生成命令窗口
  7.    s1 = "music1"
  8.    s2 = "music2"
  9.    s3 = "music3"
  10.    s4 = "music4"
  11.    @command_window = Window_Command.new(192, [s1, s2, s3,s4])
  12.    @command_window.x = 320 - @command_window.width / 2
  13.    @command_window.y = 240 - @command_window.height / 2
  14.    @musicname = ["001-Battle01","002-Battle02","003-Battle03","004-Battle04"]
  15.    Graphics.transition
  16.    loop do
  17.      Graphics.update
  18.      Input.update
  19.      update
  20.      if $scene != self
  21.        break
  22.      end
  23.    end
  24.    Graphics.freeze
  25.    @command_window.dispose
  26.    if $scene.is_a?(Scene_Title)
  27.      Graphics.transition
  28.      Graphics.freeze
  29.    end
  30. end
  31. #--------------------------------------------------------------------------
  32. # ● 刷新画面
  33. #--------------------------------------------------------------------------
  34. def update
  35.    @command_window.update
  36.    # 按下 B 键的情况下
  37.    if Input.trigger?(Input::B)
  38.      $game_system.se_play($data_system.cancel_se)
  39.      $scene = Scene_Title.new
  40.      return
  41.    end
  42.    # 按下 C 键的场合下
  43.    if Input.trigger?(Input::C)
  44.      # 命令窗口光标位置分支
  45.      name = "Audio/BGM/" + @musicname[@command_window.index]
  46.      Audio.bgm_play(name)
  47.      return
  48.    end
  49. end
  50. end
复制代码


现在的效果是:


希望修改后的效果是:




作者: 灯笼菜刀王    时间: 2008-9-15 11:07
嘛,不知道这个使用效果是什么~~,懒得试...

猜一下思路~~

找到描述时间的地方用时间除总时间得到百分比,然后用这个百分比画槽值,然后每桢刷新应该就可以了~~

关键是如何获得时间-。-,酒喝多了懒得看脚本....这个疑问留给楼下好了....
作者: 黑鏻    时间: 2008-9-15 16:56
标注易做,生成另一个窗口嘛~~~进度条难~~本人自认烂,疑问再推给楼下...
作者: IamI    时间: 2008-9-15 16:58
为什么我看这个脚本像是我上次写的End版本……好吧,我试试,进度条那个有点难=v=
还有菜刀你好懒=v=
  1. class Window_Enjoy < Window_Base
  2.   def initialize
  3.     super(640 - 224,480 - 152,224,152)
  4.     self.contents = Bitmap.new(width - 32,height - 32)
  5.   end
  6.   def update(ar)
  7.     refresh(ar)
  8.   end
  9.   def refresh(ar)
  10.     self.contents.clear
  11.     self.contents.draw_text(0,32*0,192,32,ar[0])
  12.     self.contents.draw_text(0,32*1,192,32,"出处:  " + ar[1])
  13.     self.contents.draw_text(0,32*2,192,32,"制作人:" + ar[2])
  14.     self.contents.draw_text(0,32*3,192,32,"词作者:" + ar[3])
  15.   end
  16. end
  17. class Scene_Music
  18. #--------------------------------------------------------------------------
  19. # ● 主处理
  20. #--------------------------------------------------------------------------
  21. def main
  22.    # 生成命令窗口
  23.    s1 = "music1"
  24.    s2 = "music2"
  25.    s3 = "music3"
  26.    s4 = "music4"
  27.    @command_window = Window_Command.new(192, [s1, s2, s3,s4])
  28.    @command_window.x = 0
  29.    @command_window.y = 0
  30.    @musicname = ["001-Battle01","002-Battle02","003-Battle03","004-Battle04"]
  31.    @enjoys = [["music1","From","Maker","Words Maker"],
  32.    ["music2","From","Maker","Words Maker"],
  33.    ["music3","From","Maker","Words Maker"],
  34.    ["music4","From","Maker","Words Maker"]]
  35.    @enjoy_window = Window_Enjoy.new
  36.    Graphics.transition
  37.    loop do
  38.      Graphics.update
  39.      Input.update
  40.      update
  41.      if $scene != self
  42.        break
  43.      end
  44.    end
  45.    Graphics.freeze
  46.    @command_window.dispose
  47.    if $scene.is_a?(Scene_Title)
  48.      Graphics.transition
  49.      Graphics.freeze
  50.    end
  51. end
  52. #--------------------------------------------------------------------------
  53. # ● 刷新画面
  54. #--------------------------------------------------------------------------
  55. def update
  56.    @enjoy_window.update(@enjoys[@command_window.index])
  57.    @command_window.update
  58.    # 按下 B 键的情况下
  59.    if Input.trigger?(Input::B)
  60.      $game_system.se_play($data_system.cancel_se)
  61.      $scene = Scene_Title.new
  62.      return
  63.    end
  64.    # 按下 C 键的场合下
  65.    if Input.trigger?(Input::C)
  66.      # 命令窗口光标位置分支
  67.      name = "Audio/BGM/" + @musicname[@command_window.index]
  68.      Audio.bgm_play(name)
  69.      return
  70.    end
  71. end
  72. end
复制代码

第一个功能实现了,进度条实在找不到计算音乐总长度的方法,饶了我吧=v= [LINE]1,#dddddd[/LINE]系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
作者: dbshy    时间: 2008-9-15 18:34
关于进度条
首先花个槽,这个不多说
主要是计算MUSIC 的 长度 和 现在的位置 = =
用MCISENGSTRING
mss = Win32API.new('winmm.dll', 'mciSendStringA','ppll', 'l')

不过就不能用AUDIO了
必须用MCISENGSTRING来播放


作者: IamI    时间: 2008-9-15 18:43
以下引用dbshy于2008-9-15 10:34:42的发言:

关于进度条
首先花个槽,这个不多说
主要是计算MUSIC 的 长度 和 现在的位置 = =
用MCISENGSTRING
mss = Win32API.new('winmm.dll', 'mciSendStringA','ppll', 'l')

不过就不能用AUDIO了
必须用MCISENGSTRING来播放

其实我是来好奇:怎么用……
在秀秀的那本Help里面没有找到其资料=v=




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1