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

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
打印 上一主题 下一主题

[已经解决] 新人请教一个问题:播放任意bgm音乐的脚本代码是什么?

[复制链接]

Lv4.逐梦者 (版主)

百合控

梦石
0
星屑
6643
在线时间
1275 小时
注册时间
2013-8-21
帖子
3657

开拓者

11
发表于 2013-11-3 11:10:52 | 只看该作者
飞翔的小鸟3 发表于 2013-11-3 10:40
前辈,这里要做个说明:
1.我本来也没用,但是结果BGM音乐播放出来了,窗口却卡住了。如下:

  • Scene_Changebgm
    RUBY 代码复制
    1. class Scene_Changebgm < Scene_Base
    2. #开始处理
    3.   def start
    4.     super
    5.     @changebgm = Bgm_change.new(0,0)
    6.     create_background
    7.     create_command_window
    8.     @ALLBGMMAX = 5
    9.     @NOWBGM    = 1
    10.     @bgmname = ["","Theme1","Theme2","Theme3","Theme4","Theme5"]
    11.   end
    12. #结束处理
    13.   def terminate
    14.     super
    15.     @changebgm.dispose
    16.     dispose_background
    17.     close_command_window
    18.   end
    19. #生成背景
    20.   def create_background
    21.     @background_sprite = Sprite.new
    22.     @background_sprite.bitmap = SceneManager.background_bitmap
    23.     @background_sprite.color.set(0, 0, 0, 128)
    24.   end
    25. #释放背景
    26.   def dispose_background
    27.     @background_sprite.dispose
    28.   end
    29. #生成窗口指令
    30.   def create_command_window
    31.   @changebgm.set_handler(:biaoti, method(:return_scene))
    32.   @changebgm.set_handler(:last, method(:last))
    33.   @changebgm.set_handler(:next, method(:next))
    34.   @changebgm.set_handler(:savemusic, method(:savemusic))
    35.   end
    36. #关闭窗口指令
    37.   def close_command_window
    38.     @changebgm.dispose
    39.   end
    40. #上一首
    41.   def last
    42.     if @NOWBGM != 1
    43.       @NOWBGM -= 1
    44.     elsif @NOWBGM = 1
    45.       @NOWBGM = @ALLBGMMAX
    46.     end
    47.     playbgm
    48.   end
    49. #下一首
    50.   def next
    51.     if @NOWBGM != @ALLBGMMAX
    52.       @NOWBGM += 1
    53.     elsif @NOWBGM = @ALLBGMMAX
    54.       @NOWBGM = 1
    55.     end
    56.     playbgm
    57.   end
    58. #播放音乐
    59.   def playbgm
    60.  
    61.     Audio.bgm_stop
    62.     Audio.bgm_play("Audio/BGM/#{@bgmname[@NOWBGM]}",100,70,0)
    63.   end
    64. #保存当前音乐
    65.   def savemusic
    66.     $data_system.title_bgm = RPG::BGM.new(@bgmname[@NOWBGM])
    67.     save_data($data_system, "Data/System.rvdata2")
    68.     Sound.play_save
    69.     return_scene
    70.   end
    71. end

  • class Bgm_change
    RUBY 代码复制
    1. class Bgm_change < Window_Command
    2.   def initialize(x,y)
    3.     super
    4.     self.openness = 0
    5.     open
    6.   end
    7.   def make_command_list
    8.     add_command(Vocab::Backbiaoti, :biaoti)
    9.     add_command(Vocab::Last, :last)
    10.     add_command(Vocab::Next, :next)
    11.     add_command(Vocab::Savemusic, :savemusic)
    12.   end
    13.   def process_ok
    14.     super
    15.     activate
    16.   end
    17. end

  • Scene_Title
    RUBY 代码复制
    1. #encoding:utf-8
    2. #==============================================================================
    3. # ■ Scene_Title
    4. #------------------------------------------------------------------------------
    5. #  标题画面
    6. #==============================================================================
    7.  
    8. class Scene_Title < Scene_Base
    9.   #--------------------------------------------------------------------------
    10.   # ● 开始处理
    11.   #--------------------------------------------------------------------------
    12.   def start
    13.     super
    14.     SceneManager.clear
    15.     Graphics.freeze
    16.     create_background
    17.     create_foreground
    18.     create_command_window
    19.     play_title_music
    20.   end
    21.   #--------------------------------------------------------------------------
    22.   # ● 获取渐变速度
    23.   #--------------------------------------------------------------------------
    24.   def transition_speed
    25.     return 20
    26.   end
    27.   #--------------------------------------------------------------------------
    28.   # ● 结束处理
    29.   #--------------------------------------------------------------------------
    30.   def terminate
    31.     super
    32.     SceneManager.snapshot_for_background
    33.     dispose_background
    34.     dispose_foreground
    35.   end
    36.   #--------------------------------------------------------------------------
    37.   # ● 生成背景
    38.   #--------------------------------------------------------------------------
    39.   def create_background
    40.     @sprite1 = Sprite.new
    41.     @sprite1.bitmap = Cache.title1($data_system.title1_name)
    42.     @sprite2 = Sprite.new
    43.     @sprite2.bitmap = Cache.title2($data_system.title2_name)
    44.     center_sprite(@sprite1)
    45.     center_sprite(@sprite2)
    46.   end
    47.   #--------------------------------------------------------------------------
    48.   # ● 生成背景(gai)
    49.   #--------------------------------------------------------------------------
    50.   def create_background
    51.     beijing = rand(3)
    52.     case beijing
    53.       when 0
    54.         @beijingtwo = "Book"
    55.       when 1
    56.         @beijingtwo = "Castle"
    57.       when 2
    58.         @beijingtwo = "CrossedSwords"
    59.     end
    60.     @sprite1 = Sprite.new
    61.     @sprite1.bitmap = Cache.title1($data_system.title1_name)
    62.     @sprite1.bitmap = Cache.title1(@beijingtwo)
    63.     @sprite2 = Sprite.new
    64.     @sprite2.bitmap = Cache.title2($data_system.title2_name)
    65.     center_sprite(@sprite1)
    66.     center_sprite(@sprite2)
    67.   end
    68.  
    69.   #--------------------------------------------------------------------------
    70.   # ● 生成前景
    71.   #--------------------------------------------------------------------------
    72.   def create_foreground
    73.     @foreground_sprite = Sprite.new
    74.     @foreground_sprite.bitmap = Bitmap.new(Graphics.width, Graphics.height)
    75.     @foreground_sprite.z = 100
    76.     draw_game_title if $data_system.opt_draw_title
    77.   end
    78.   #--------------------------------------------------------------------------
    79.   # ● 绘制游戏标题
    80.   #--------------------------------------------------------------------------
    81.   def draw_game_title
    82.     @foreground_sprite.bitmap.font.size = 48
    83.     rect = Rect.new(0, 0, Graphics.width, Graphics.height / 2)
    84.     @foreground_sprite.bitmap.draw_text(rect, $data_system.game_title, 1)
    85.   end
    86.   #--------------------------------------------------------------------------
    87.   # ● 释放背景
    88.   #--------------------------------------------------------------------------
    89.   def dispose_background
    90.     @sprite1.bitmap.dispose
    91.     @sprite1.dispose
    92.     @sprite2.bitmap.dispose
    93.     @sprite2.dispose
    94.   end
    95.   #--------------------------------------------------------------------------
    96.   # ● 释放前景
    97.   #--------------------------------------------------------------------------
    98.   def dispose_foreground
    99.     @foreground_sprite.bitmap.dispose
    100.     @foreground_sprite.dispose
    101.   end
    102.   #--------------------------------------------------------------------------
    103.   # ● 执行精灵居中
    104.   #--------------------------------------------------------------------------
    105.   def center_sprite(sprite)
    106.     sprite.ox = sprite.bitmap.width / 2
    107.     sprite.oy = sprite.bitmap.height / 2
    108.     sprite.x = Graphics.width / 2
    109.     sprite.y = Graphics.height / 2
    110.   end
    111.   #--------------------------------------------------------------------------
    112.   # ● 生成指令窗口
    113.   #--------------------------------------------------------------------------
    114.   def create_command_window
    115.     @command_window = Window_TitleCommand.new
    116.     @command_window.set_handler(:new_game, method(:command_new_game))
    117.     @command_window.set_handler(:continue, method(:command_continue))
    118.     @command_window.set_handler(:shutdown, method(:command_shutdown))
    119.     @command_window.set_handler(:changebgm, method(:command_changebgm_open))
    120.   end
    121.   #--------------------------------------------------------------------------
    122.   # ● 指令“更改BGM”
    123.   #--------------------------------------------------------------------------
    124.   def command_changebgm_open
    125.     SceneManager.call(Scene_Changebgm)
    126.   end
    127.   #--------------------------------------------------------------------------
    128.   # ● 关闭指令窗口
    129.   #--------------------------------------------------------------------------
    130.   def close_command_window
    131.     @command_window.close
    132.     update until @command_window.close?
    133.   end
    134.   #--------------------------------------------------------------------------
    135.   # ● 指令“开始游戏”
    136.   #--------------------------------------------------------------------------
    137.   def command_new_game
    138.     DataManager.setup_new_game
    139.     close_command_window
    140.     fadeout_all
    141.     $game_map.autoplay
    142.     SceneManager.goto(Scene_Map)
    143.   end
    144.   #--------------------------------------------------------------------------
    145.   # ● 指令“继续游戏”
    146.   #--------------------------------------------------------------------------
    147.   def command_continue
    148.     close_command_window
    149.     SceneManager.call(Scene_Load)
    150.   end
    151.   #--------------------------------------------------------------------------
    152.   # ● 指令“退出游戏”
    153.   #--------------------------------------------------------------------------
    154.   def command_shutdown
    155.     close_command_window
    156.     fadeout_all
    157.     SceneManager.exit
    158.   end
    159.   #--------------------------------------------------------------------------
    160.   # ● 播放标题画面音乐
    161.   #--------------------------------------------------------------------------
    162.   def play_title_music
    163.     $data_system.title_bgm.play
    164.     RPG::BGS.stop
    165.     RPG::ME.stop
    166.   end
    167. end

  • Window_TitleCommand
    RUBY 代码复制
    1. #encoding:utf-8
    2. #==============================================================================
    3. # ■ Window_TitleCommand
    4. #------------------------------------------------------------------------------
    5. #  标题画面中,选择“开始游戏/继续游戏”的窗口。
    6. #==============================================================================
    7.  
    8. class Window_TitleCommand < Window_Command
    9.   #--------------------------------------------------------------------------
    10.   # ● 初始化对象
    11.   #--------------------------------------------------------------------------
    12.   def initialize
    13.     super(0, 0)
    14.     update_placement
    15.     select_symbol(:continue) if continue_enabled
    16.     self.openness = 0
    17.     open
    18.   end
    19.   #--------------------------------------------------------------------------
    20.   # ● 获取窗口的宽度
    21.   #--------------------------------------------------------------------------
    22.   def window_width
    23.     return 160
    24.   end
    25.   #--------------------------------------------------------------------------
    26.   # ● 更新窗口的位置
    27.   #--------------------------------------------------------------------------
    28.   def update_placement
    29.     self.x = (Graphics.width - width) / 2
    30.     self.y = (Graphics.height * 1.6 - height) / 2
    31.   end
    32.   #--------------------------------------------------------------------------
    33.   # ● 生成指令列表
    34.   #--------------------------------------------------------------------------
    35.   def make_command_list
    36.     add_command(Vocab::new_game, :new_game)
    37.     add_command(Vocab::continue, :continue, continue_enabled)
    38.     add_command(Vocab::Changebgm,:changebgm)
    39.     add_command(Vocab::shutdown, :shutdown)
    40.   end
    41.   #--------------------------------------------------------------------------
    42.   # ● 获取“继续游戏”选项是否有效
    43.   #--------------------------------------------------------------------------
    44.   def continue_enabled
    45.     DataManager.save_file_exists?
    46.   end
    47. end
  • Vocab没有修改
  • 评分

    参与人数 1梦石 +2 收起 理由
    Sion + 2 认可答案

    查看全部评分

    萌新瑟瑟发抖
    看到我请叫我去干活
    回复 支持 反对

    使用道具 举报

    Lv2.观梦者

    梦石
    0
    星屑
    470
    在线时间
    159 小时
    注册时间
    2013-11-2
    帖子
    205

    开拓者

    12
     楼主| 发表于 2013-11-3 11:49:43 | 只看该作者
    余烬之中 发表于 2013-11-3 11:10
  • Scene_Changebgm
    class Scene_Changebgm < Scene_Base
    #开始处理

  • 谢谢!真的谢谢你们!!
    余烬之中,还有喵呜喵5前辈!
    在此向你们辛勤的帮助以示感谢。我的问题已经得到了很好的解决,虽然这个脚本真的很无聊,但我还是得到了你们的真诚相助,我再次表示感谢!
    嗯,问题解决了,我可以改为“已经解决”了吧?

    点评

    嗯,知道了。  发表于 2013-11-3 11:56
    不用自己改,版主会来结算【笑  发表于 2013-11-3 11:52
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

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

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

    GMT+8, 2024-11-17 12:35

    Powered by Discuz! X3.1

    © 2001-2013 Comsenz Inc.

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