Project1

标题: 图书馆音乐鉴赏无法翻页 [打印本页]

作者: 嚴子    时间: 2013-4-3 19:21
标题: 图书馆音乐鉴赏无法翻页
如下脚本。我想用它做音乐播放,但是它最多只能显示16首歌曲。若放进更多歌曲,可以播放但是无法看到歌曲名以及选项位置。
求解如何实现翻页。
如果实在没办法,能不能实现一页显示35首歌曲。很急。求帮忙
  1. #==============================================================================
  2. # ■ Scene_Read
  3. #==============================================================================

  4. class Scene_Read_SUPER
  5.   #--------------------------------------------------------------------------
  6.   # ● 主处理
  7.   #--------------------------------------------------------------------------
  8.   def main
  9.     sp = Spriteset_Map.new
  10.     @read_window = Window_Reader.new([""], 0)
  11.     @read_window.opacity = 230
  12.     @read_window.z = 900
  13.     @command_window = Window_Command.new(180, ["选音乐","选书阅读"])
  14.     @command_window.y = (480 - @command_window.height)/2
  15.     @command_window.opacity = 230
  16.     @command_window.z = 999
  17.     @doing = 0
  18.     Graphics.transition
  19.     # 主循环
  20.     loop do
  21.       # 刷新游戏画面
  22.       Graphics.update
  23.       # 刷新输入信息
  24.       Input.update
  25.       # 刷新画面
  26.       update
  27.       # 如果画面切换的话就中断循环
  28.       if $scene != self
  29.         break
  30.       end
  31.     end
  32.     # 准备过渡
  33.     Graphics.freeze
  34.     @command_window.dispose if !@command_window.disposed?
  35.     @read_window.dispose
  36.     sp.dispose
  37.   end
  38.   
  39.   def update
  40.     case @doing
  41.     when 0 #选项
  42.       update_0
  43.     when 1 #选书
  44.       update_1
  45.     when 2 #读书
  46.       update_2
  47.     when 3 #选音乐
  48.       update_3
  49.     end
  50.   end
  51.   
  52.   def update_0
  53.     @command_window.update
  54.     if Input.trigger?(Input::C)
  55.       case @command_window.index
  56.       when 0
  57.         $game_system.se_play($data_system.decision_se)
  58.         text = Dir["Audio/music/*"]
  59.         @text = []
  60.         for tx in text
  61.           @text.push(tx.split(/music\//)[1])
  62.         end
  63.         @command_window.dispose
  64.         @command_window = Window_Command.new(180, @text)
  65.         @command_window.y = (480 - @command_window.height)/2
  66.         @command_window.opacity = 230
  67.         @command_window.z = 999
  68.         @doing = 3        
  69.       when 1
  70.         $game_system.se_play($data_system.decision_se)
  71.         text = Dir["Graphics/txt/*"]
  72.         @text = []
  73.         for tx in text
  74.           @text.push (tx.split(/txt\//)[1].split(/.txt/)[0])
  75.         end
  76.         @command_window.dispose
  77.         @command_window = Window_Command.new(180, @text)
  78.         @command_window.y = (480 - @command_window.height)/2
  79.         @command_window.opacity = 230
  80.         @command_window.z = 999
  81.         @doing = 1
  82.       when 2
  83.         $game_system.se_play($data_system.decision_se)
  84.         @command_window.visible = false
  85.         @command_window.active = false
  86.         @doing = 2
  87.       end
  88.     end
  89.     if Input.trigger?(Input::B)
  90.       $game_system.se_play($data_system.decision_se)
  91.       $scene = Scene_Map.new
  92.     end         
  93.   end
  94.   
  95.   def update_1   
  96.     @command_window.update
  97.     if Input.trigger?(Input::B)
  98.       $game_system.se_play($data_system.cancel_se)
  99.       @doing = 0
  100.       @command_window.dispose
  101.       if @read_window.text != [""]
  102.         @command_window = Window_Command.new(180, ["选音乐","选书阅读","继续阅读"])
  103.       else
  104.         @command_window = Window_Command.new(180, ["选音乐","选书阅读"])
  105.       end
  106.       @command_window.y = (480 - @command_window.height)/2
  107.       @command_window.opacity = 230
  108.       @command_window.z = 999
  109.     end
  110.     if Input.trigger?(Input::C)
  111.       $game_system.se_play($data_system.decision_se)
  112.       filename = "Graphics/txt/" + @command_window.commands[@command_window.index]+".txt"
  113.       file = File.open(filename, "r")
  114.       r = file.readlines
  115.       @real_text = []
  116.       for i in 0...r.size
  117.         temp_story = r[i].split(/\n/)[0]
  118.         temp_story.gsub!(/,/) {","} if temp_story != nil
  119.         temp_story.gsub!(/\./) {"。"} if temp_story != nil
  120.         temp_story.gsub!(/  /) {" "} if temp_story != nil
  121.         while(temp_story != nil)
  122.           text = ""
  123.           if temp_story.length > 75
  124.             text = temp_story.slice!(0,75)
  125.           else
  126.             text = temp_story
  127.             temp_story = nil
  128.           end
  129.           @real_text.push(text)
  130.         end
  131.       end
  132.       file.close
  133.       @read_window.renew(@real_text, 0)
  134.       @command_window.visible = false
  135.       @command_window.active = false
  136.       @doing = 2
  137.     end
  138.   end
  139.   
  140.   
  141.   def update_2
  142.     @read_window.update
  143.     if Input.trigger?(Input::B)
  144.       $game_system.se_play($data_system.decision_se)
  145.       @doing = 0
  146.       @command_window.dispose
  147.       if @read_window.text != [""]
  148.         @command_window = Window_Command.new(180, ["选音乐","选书阅读","继续阅读"])
  149.       else
  150.         @command_window = Window_Command.new(180, ["选音乐","选书阅读"])
  151.       end
  152.       @command_window.y = (480 - @command_window.height)/2
  153.       @command_window.opacity = 230
  154.       @command_window.z = 999
  155.       @doing = 0
  156.     end
  157.     if Input.trigger?(Input::UP)
  158.       $game_system.se_play($data_system.cursor_se)
  159.       @read_window.minus_1
  160.     end
  161.     if Input.trigger?(Input::DOWN)
  162.       $game_system.se_play($data_system.cursor_se)
  163.       @read_window.add_1
  164.     end
  165.     if Input.trigger?(Input::L) or Input.trigger?(Input::LEFT)
  166.       $game_system.se_play($data_system.cursor_se)
  167.       @read_window.page_back
  168.     end
  169.     if Input.trigger?(Input::R) or Input.trigger?(Input::RIGHT)
  170.       $game_system.se_play($data_system.cursor_se)
  171.       @read_window.page_add
  172.     end
  173.   end
  174.   
  175.   def update_3   
  176.     @command_window.update
  177.     if Input.trigger?(Input::C)
  178.       $game_system.se_play($data_system.decision_se)
  179.       filename = "Audio/music/" + @command_window.commands[@command_window.index]
  180.       Audio.bgm_play(filename, 100, 100)
  181.     end
  182.     if Input.trigger?(Input::B)
  183.       $game_system.se_play($data_system.cancel_se)
  184.       @doing = 0
  185.       @command_window.dispose
  186.       if @read_window.text != [""]
  187.         @command_window = Window_Command.new(180, ["选音乐","选书阅读","继续阅读"])
  188.       else
  189.         @command_window = Window_Command.new(180, ["选音乐","选书阅读"])
  190.       end
  191.       @command_window.y = (480 - @command_window.height)/2
  192.       @command_window.opacity = 230
  193.       @command_window.z = 999
  194.     end
  195.   end
  196.    
  197.   
  198. end
复制代码

作者: joe5491    时间: 2013-4-3 23:24
修好了~
  1. #==============================================================================
  2. # ■ Scene_Read
  3. #==============================================================================

  4. class Scene_Read_SUPER
  5.   #--------------------------------------------------------------------------
  6.   # ● 主处理
  7.   #--------------------------------------------------------------------------
  8.   def main
  9.     sp = Spriteset_Map.new
  10.     @read_window = Window_Reader.new([""], 0)
  11.     @read_window.opacity = 230
  12.     @read_window.z = 900
  13.     @command_window = Window_Command.new(180, ["选音乐","选书阅读"])
  14.     @command_window.y = (480 - @command_window.height)/2
  15.     @command_window.opacity = 230
  16.     @command_window.z = 999
  17.     @doing = 0
  18.     Graphics.transition
  19.     # 主循环
  20.     loop do
  21.       # 刷新游戏画面
  22.       Graphics.update
  23.       # 刷新输入信息
  24.       Input.update
  25.       # 刷新画面
  26.       update
  27.       # 如果画面切换的话就中断循环
  28.       if $scene != self
  29.         break
  30.       end
  31.     end
  32.     # 准备过渡
  33.     Graphics.freeze
  34.     @command_window.dispose if !@command_window.disposed?
  35.     @read_window.dispose
  36.     sp.dispose
  37.   end
  38.   
  39.   def update
  40.     case @doing
  41.     when 0 #选项
  42.       update_0
  43.     when 1 #选书
  44.       update_1
  45.     when 2 #读书
  46.       update_2
  47.     when 3 #选音乐
  48.       update_3
  49.     end
  50.   end
  51.   
  52.   def update_0
  53.     @command_window.update
  54.     if Input.trigger?(Input::C)
  55.       case @command_window.index
  56.       when 0
  57.         $game_system.se_play($data_system.decision_se)
  58.         text = Dir["Audio/music/*"]
  59.         @text = []
  60.         for tx in text
  61.           @text.push(tx.split(/music\//)[1])
  62.         end
  63.         @command_window.dispose
  64.         @command_window = Window_Command.new(180, @text)
  65.         @command_window.y = (480 - @command_window.height)/2
  66.         if @command_window.y < 0
  67.           @command_window.y=0
  68.           @command_window.height=480
  69.         end
  70.         @command_window.opacity = 230
  71.         @command_window.z = 999
  72.         @doing = 3        
  73.       when 1
  74.         $game_system.se_play($data_system.decision_se)
  75.         text = Dir["Graphics/txt/*"]
  76.         @text = []
  77.         for tx in text
  78.           @text.push (tx.split(/txt\//)[1].split(/.txt/)[0])
  79.         end
  80.         @command_window.dispose
  81.         @command_window = Window_Command.new(180, @text)
  82.         @command_window.y = (480 - @command_window.height)/2
  83.         if @command_window.y < 0
  84.           @command_window.y=0
  85.           @command_window.height=480
  86.         end
  87.         @command_window.opacity = 230
  88.         @command_window.z = 999
  89.         @doing = 1
  90.       when 2
  91.         $game_system.se_play($data_system.decision_se)
  92.         @command_window.visible = false
  93.         @command_window.active = false
  94.         @doing = 2
  95.       end
  96.     end
  97.     if Input.trigger?(Input::B)
  98.       $game_system.se_play($data_system.decision_se)
  99.       $scene = Scene_Map.new
  100.     end         
  101.   end
  102.   
  103.   def update_1   
  104.     @command_window.update
  105.     if Input.trigger?(Input::B)
  106.       $game_system.se_play($data_system.cancel_se)
  107.       @doing = 0
  108.       @command_window.dispose
  109.       if @read_window.text != [""]
  110.         @command_window = Window_Command.new(180, ["选音乐","选书阅读","继续阅读"])
  111.       else
  112.         @command_window = Window_Command.new(180, ["选音乐","选书阅读"])
  113.       end
  114.       @command_window.y = (480 - @command_window.height)/2
  115.       @command_window.opacity = 230
  116.       @command_window.z = 999
  117.     end
  118.     if Input.trigger?(Input::C)
  119.       $game_system.se_play($data_system.decision_se)
  120.       filename = "Graphics/txt/" + @command_window.commands[@command_window.index]+".txt"
  121.       file = File.open(filename, "r")
  122.       r = file.readlines
  123.       @real_text = []
  124.       for i in 0...r.size
  125.         temp_story = r[i].split(/\n/)[0]
  126.         temp_story.gsub!(/,/) {","} if temp_story != nil
  127.         temp_story.gsub!(/\./) {"。"} if temp_story != nil
  128.         temp_story.gsub!(/  /) {" "} if temp_story != nil
  129.         while(temp_story != nil)
  130.           text = ""
  131.           if temp_story.length > 75
  132.             text = temp_story.slice!(0,75)
  133.           else
  134.             text = temp_story
  135.             temp_story = nil
  136.           end
  137.           @real_text.push(text)
  138.         end
  139.       end
  140.       file.close
  141.       @read_window.renew(@real_text, 0)
  142.       @command_window.visible = false
  143.       @command_window.active = false
  144.       @doing = 2
  145.     end
  146.   end
  147.   
  148.   
  149.   def update_2
  150.     @read_window.update
  151.     if Input.trigger?(Input::B)
  152.       $game_system.se_play($data_system.decision_se)
  153.       @doing = 0
  154.       @command_window.dispose
  155.       if @read_window.text != [""]
  156.         @command_window = Window_Command.new(180, ["选音乐","选书阅读","继续阅读"])
  157.       else
  158.         @command_window = Window_Command.new(180, ["选音乐","选书阅读"])
  159.       end
  160.       @command_window.y = (480 - @command_window.height)/2
  161.       @command_window.opacity = 230
  162.       @command_window.z = 999
  163.       @doing = 0
  164.     end
  165.     if Input.trigger?(Input::UP)
  166.       $game_system.se_play($data_system.cursor_se)
  167.       @read_window.minus_1
  168.     end
  169.     if Input.trigger?(Input::DOWN)
  170.       $game_system.se_play($data_system.cursor_se)
  171.       @read_window.add_1
  172.     end
  173.     if Input.trigger?(Input::L) or Input.trigger?(Input::LEFT)
  174.       $game_system.se_play($data_system.cursor_se)
  175.       @read_window.page_back
  176.     end
  177.     if Input.trigger?(Input::R) or Input.trigger?(Input::RIGHT)
  178.       $game_system.se_play($data_system.cursor_se)
  179.       @read_window.page_add
  180.     end
  181.   end
  182.   
  183.   def update_3   
  184.     @command_window.update
  185.     #if @command_window.index >15
  186.       
  187.    
  188.     if Input.trigger?(Input::C)
  189.       $game_system.se_play($data_system.decision_se)
  190.       filename = "Audio/music/" + @command_window.commands[@command_window.index]
  191.       Audio.bgm_play(filename, 100, 100)
  192.     end
  193.     if Input.trigger?(Input::B)
  194.       $game_system.se_play($data_system.cancel_se)
  195.       @doing = 0
  196.       @command_window.dispose
  197.       if @read_window.text != [""]
  198.         @command_window = Window_Command.new(180, ["选音乐","选书阅读","继续阅读"])
  199.       else
  200.         @command_window = Window_Command.new(180, ["选音乐","选书阅读"])
  201.       end
  202.       @command_window.y = (480 - @command_window.height)/2
  203.       @command_window.opacity = 230
  204.       @command_window.z = 999
  205.     end
  206.   end
  207. end
复制代码
p.s.我不知道實現翻頁是啥意思,因為我沒有Window_Reader的腳本,給出來在幫你吧......
作者: 嚴子    时间: 2013-4-4 18:18
joe5491 发表于 2013-4-3 23:24
修好了~p.s.我不知道實現翻頁是啥意思,因為我沒有Window_Reader的腳本,給出來在幫你吧...... ...

就是这样的效果!谢谢您。认可答案。




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