幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1065|回复: 7

[求助]FC的新手问题才口才口~~~翻页相关...(已解决)

[复制链接]

20

主题

357

帖子

4300

积分

⑥精研

真·RMXP废柴

积分
4300
发表于 2005-6-13 21:03:26 | 显示全部楼层 |阅读模式
新的问题又出现鸟...具体描述在4楼...

[此贴子已经被作者于2005-6-17 21:59:31编辑过]
《非·英雄传说Episode 1.5  —传说的后来—》 ↑ 制作中。别点,不是链接...
回复

使用道具 举报

32

主题

1187

帖子

44万

积分

⑧专业

大象摇啊摇

积分
441584
QQ
发表于 2005-6-14 04:26:44 | 显示全部楼层
Audio.bgm_play(\"Audio/BGM/1111.mid\", 100, 100)
这样。
真実を知らぬ者にとって、闇は安寧ではなく…… 恐怖や邪悪という負の存在を想起させるのであろうな。
回复 支持 反对

使用道具 举报

20

主题

357

帖子

4300

积分

⑥精研

真·RMXP废柴

积分
4300
 楼主| 发表于 2005-6-14 10:30:37 | 显示全部楼层
谢谢楼上的高手...253一个了...

可耻地发现问题出在以前总是往Audio_bgm.play前多加一个$才导致错误频频......[em04]

[此贴子已经被作者于2005-6-14 10:42:59编辑过]
《非·英雄传说Episode 1.5  —传说的后来—》 ↑ 制作中。别点,不是链接...
回复 支持 反对

使用道具 举报

20

主题

357

帖子

4300

积分

⑥精研

真·RMXP废柴

积分
4300
 楼主| 发表于 2005-6-14 11:44:23 | 显示全部楼层
新的问题又出现鸟~
由于曲目过多,而这种命令行式的窗口最多只能显示14行项目,所以就涉及到翻页的问题...
目前偶是这样解决D:
1.有几页,就建立几个类,一页为一个类,为每个类编上对应的页次号:如,1、2、3...等;
2.自己手动画几张小图,用来显示页码用...比如像:“1/3,2/4”这类的;
3.用“头咬尾”的方法,把相关选项的第一项和第14项改为“前页”或“次页”并定义脚本内容为“$scene = Scene_musicbox(N).new”;
4.这些类除了选择项和按下C键后的反应项不一样外,其他的都完全相同...
以上。
可是,这样的方法看上去似乎很......FC+冗长+愚笨,不知道各位高手前辈可否指点一二,从哪里下手可以让这段代码“瘦下身”,谢谢了先~~~[em29]
《非·英雄传说Episode 1.5  —传说的后来—》 ↑ 制作中。别点,不是链接...
回复 支持 反对

使用道具 举报

32

主题

1187

帖子

44万

积分

⑧专业

大象摇啊摇

积分
441584
QQ
发表于 2005-6-14 15:35:19 | 显示全部楼层
已经做了吗?看看代码.
真実を知らぬ者にとって、闇は安寧ではなく…… 恐怖や邪悪という負の存在を想起させるのであろうな。
回复 支持 反对

使用道具 举报

20

主题

357

帖子

4300

积分

⑥精研

真·RMXP废柴

积分
4300
 楼主| 发表于 2005-6-14 18:20:53 | 显示全部楼层
[em06]
太长了......一共是4个类。
1.分别命名是Scene_Musicbox1~4;
2.以下是代码:
class Scene_Musicbox2
####### 设定光标初始位置
  def initialize(menu_index = 0)
    @menu_index = menu_index
  end
####### 主处理
  def main
    # 生成曲目选择窗口
    s1 = \"上一页\"      # ←第1页的类无此项
    s2 = \"14 - Asteroid\"
    s3 = \"15 - Destiny 2nd\"
    s4 = \"16 - 塔巴沙Theme\"
    s5 = \"17 - Dragon?? Dragon!!\"
    s6 = \"18 - Battle(r) theme remix\"
    s7 = \"19 - 水烟\"
    s8 = \"20 - Monster\'s Dance\"
    s9 = \"21 - BOSS战主题——异形之血\"
    s10 = \"22 - Fairy DanDanDang\"
    s11 = \"23 - Time Attack\"
    s12 = \"24 - Peace\"
    s13 = \"25 - Ease\"
    s14 = \"下一页\"  # ←最后一页的类无此项
    @command_window = Window_Command.new(640, [s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14])
    @command_window.index = @menu_index
    # 执行过渡
    Graphics.transition
    # 主循环
    loop do
      # 刷新游戏画面
      Graphics.update
      # 刷新输入信息
      Input.update
      # 刷新画面
      update
      # 如果切换画面就中断循环
      if $scene != self
        break
      end
    end
    # 准备过渡
    Graphics.freeze
    # 释放窗口
    @command_window.dispose
  end
###### 刷新窗口
  def update
    @command_window.update
    # 命令窗口被激活的情况下: 调用 update_command
    if @command_window.active
      update_command
      return
    end
  end
###### 按键处理和响应  
  def update_command
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 切换回地图画面
      $game_system.bgm_restore
      $scene = Scene_Map.new
      return
    end
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
          # 命令窗口的光标位置分支
      case @command_window.index
      when 0
        $game_system.se_play($data_system.cancel_se)
        $scene = Scene_Musicbox.new
      when 1
        Audio.bgm_play(\"Audio/BGM/4.mid\", 100, 100)
      when 2
        Audio.bgm_play(\"Audio/BGM/des.mid\", 100, 100)
      when 3
        Audio.bgm_play(\"Audio/BGM/GR.ogg\", 100, 100)
      when 4
        Audio.bgm_play(\"Audio/BGM/G2.ogg\", 100, 100)
      when 5
        Audio.bgm_play(\"Audio/BGM/battle_theme.mid\", 100, 100)
      when 6
        Audio.bgm_play(\"Audio/BGM/Act1.mid\", 100, 100)
      when 7
        Audio.bgm_play(\"Audio/BGM/108.mid\", 100, 100)
      when 8
        Audio.bgm_play(\"Audio/BGM/17.mp3\", 100, 100)
      when 9
        Audio.bgm_play(\"Audio/BGM/RG.mid\", 100, 100)
      when 10
        Audio.bgm_play(\"Audio/BGM/P2.mid\", 100, 100)
      when 11
        Audio.bgm_play(\"Audio/BGM/19.mp3\", 100, 100)
      when 12
        Audio.bgm_play(\"Audio/BGM/14.mp3\", 100, 100)
      when 13
        $game_system.se_play($data_system.cancel_se)
        $scene = Scene_Musicbox3.new
      end
      return
    end
    # 按下方向键右键后的翻页判定
    if Input.trigger?(Input::RIGHT)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Musicbox3.new # ←进入次页
      return
    end
    # 按下方向键左键后的翻页判定
    if Input.trigger?(Input:EFT)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Musicbox.new  # ←返回前页
      return
    end
  end
end
3.每个类里,需要生成的窗口项目名称(曲名)都不同,对应的需要播放的文件也不同。
4.以上代码为第2页的类,其他第1、3、4页内容基本完全相同,只是区别在翻页和曲目的代码上...
5.图片显示的部分还没搞定......(不会[em06])
《非·英雄传说Episode 1.5  —传说的后来—》 ↑ 制作中。别点,不是链接...
回复 支持 反对

使用道具 举报

32

主题

1187

帖子

44万

积分

⑧专业

大象摇啊摇

积分
441584
QQ
发表于 2005-6-15 04:52:54 | 显示全部楼层
class Scene_Musicbox
  def initialize(menu_index = 1)
    @menu_index = menu_index
  end
####### 主处理
  def main
    # 生成曲目选择窗口
    #曲目名
    @m=[\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\",\"h\",\"i\",\"j\",\"k\",\"l\",\"m\",\"n\",\"o\",\"p\",\"q\",\"r\",\"s\",\"t\",\"u\",\"v\",\"w\",\"x\",\"y\",\"z\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"]#歌曲名称
   
    #曲目文件名
    @mm=[\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\",\"h\",\"i\",\"j\",\"k\",\"l\",\"m\",\"n\",\"o\",\"p\",\"q\",\"r\",\"s\",\"t\",\"u\",\"v\",\"w\",\"x\",\"y\",\"z\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"]#歌曲地址
    s=[]
   
    #
    i=14 * (@menu_index-1)
    for j in 0..14
      if @m==nil
        break
      end
      s[j] = @m
      i+=1
    end
    @command_window = Window_Command.new(640, s.compact)
    @command_window.index = 0
    # 执行过渡
    Graphics.transition
    # 主循环
    loop do
      # 刷新游戏画面
      Graphics.update
      # 刷新输入信息
      Input.update
      # 刷新画面
      update
      # 如果切换画面就中断循环
      if $scene != self
        break
      end
    end
    # 准备过渡
    Graphics.freeze
    # 释放窗口
    @command_window.dispose
  end
###### 刷新窗口
  def update
    @command_window.update
    # 命令窗口被激活的情况下: 调用 update_command
    #if @command_window.active
      update_command
      #return
    #end
  end
###### 按键处理和响应  
  def update_command
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 切换回地图画面
      $game_system.bgm_restore
      $scene = Scene_Map.new
      return
    end
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
          # 命令窗口的光标位置分支
      i=14 * (@menu_index-1)
      case @command_window.index
      when 0
        playbgm(\"Audio/BGM/\"+@mm[i+@command_window.index])
      when 1
        playbgm(\"Audio/BGM/\"+@mm[i+@command_window.index])
      when 2
        playbgm(\"Audio/BGM/\"+@mm[i+@command_window.index])
      when 3
        playbgm(\"Audio/BGM/\"+@mm[i+@command_window.index])
      when 4
        playbgm(\"Audio/BGM/\"+@mm[i+@command_window.index])
      when 5
        playbgm(\"Audio/BGM/\"+@mm[i+@command_window.index])
      when 6
        playbgm(\"Audio/BGM/\"+@mm[i+@command_window.index])
      when 7
        playbgm(\"Audio/BGM/\"+@mm[i+@command_window.index])
      when 8
        playbgm(\"Audio/BGM/\"+@mm[i+@command_window.index])
      when 9
        playbgm(\"Audio/BGM/\"+@mm[i+@command_window.index])
      when 10
        playbgm(\"Audio/BGM/\"+@mm[i+@command_window.index])
      when 11
        playbgm(\"Audio/BGM/\"+@mm[i+@command_window.index])
      when 12
        playbgm(\"Audio/BGM/\"+@mm[i+@command_window.index])
      when 13
        playbgm(\"Audio/BGM/\"+@mm[i+@command_window.index])
      when 14
        playbgm(\"Audio/BGM/\"+@mm[i+@command_window.index])
      end
      return
    end
    # 按下方向键右键后的翻页判定
    if @menu_index <= (@m.size/14) and @m.size > 14
      if Input.trigger?(Input::RIGHT)
        $game_system.se_play($data_system.cancel_se)
        $scene = Scene_Musicbox.new(@menu_index+1) # ←进入次页
        return
      end
    end
    # 按下方向键左键后的翻页判定
    if @menu_index > 1
      if Input.trigger?(Input:EFT)
        $game_system.se_play($data_system.cancel_se)
        $scene = Scene_Musicbox.new(@menu_index-1)  # ←返回前页
        return
      end
    end
  end
  
  #播放曲目,找不到文件的话就不播放。
  def playbgm(f)
    begin
      unless f == nil
        Audio.bgm_play(f, 100, 100)
      end
    rescue Errn:ENOENT
      #print(\"找不到文件:#{f}\")
    end
  end
end

试试看
真実を知らぬ者にとって、闇は安寧ではなく…… 恐怖や邪悪という負の存在を想起させるのであろうな。
回复 支持 反对

使用道具 举报

20

主题

357

帖子

4300

积分

⑥精研

真·RMXP废柴

积分
4300
 楼主| 发表于 2005-6-17 22:00:26 | 显示全部楼层
非常感谢CHAO×2桑的帮助,问题已经基本上解决...[em11]
《非·英雄传说Episode 1.5  —传说的后来—》 ↑ 制作中。别点,不是链接...
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2025-6-21 06:26 , Processed in 0.011597 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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