Project1

标题: 万恶的字幕脚本问题 [打印本页]

作者: №独孤剑→    时间: 2011-9-18 15:00
标题: 万恶的字幕脚本问题
想在开头整一个背景介绍,就像龙使传说-承接未完的梦境那样,使用完返回地图,结果万恶的bug出现了:1.必须前面出现文本,否则卡死;2.无论我使用中断循环条件分歧变量开关,回到地图后一切无视,从头开始。求帮助…dsu_plus_rewardpost_czw
作者: 各种压力的猫君    时间: 2011-9-18 21:04
以下脚本插到MAIN上面即可。
字幕内容在哪里改不用我说了吧 = =
每行字幕长度不要超过字幕上下的双横线,否则会被压扁
  1. #==============================================================================
  2. # ■ Scene_Credit 【改】
  3. #------------------------------------------------------------------------------
  4. #  处理滚动字幕的类。
  5. #------------------------------------------------------------------------------
  6. #   使用方法:
  7. #   $scene = Scene_Credit.new                  字幕结束返回标题
  8. #   $scene = Scene_Credit.new(Scene_Map)       字幕结束返回地图
  9. #==============================================================================

  10. class Scene_Credit
  11. #======================================================
  12.   CREDIT=<<_END_
  13. 很难说什么是办不到的事情,因为昨天的梦想,
  14. 可以是今天的希望,并且还可以成为明天的现实。
  15. 要抒写自己梦想的人,反而更应该清醒。

  16. 梦想无论怎样模糊,总潜伏在我们心底,
  17. 使我们的心境永远得不到宁静,直到这些梦想成为事实。

  18. 青春是人生最快乐的时光,
  19. 但这种快乐往往完全是因为它充满着希望,
  20. 而不是因为得到了什么或逃避了什么。

  21. 无论哪个时代,青年的特点总是怀抱着各种理想和幻想。
  22. 这并不是什么毛病,而是一种宝贵的品质。

  23. 青年时准备好材料,想造一座通向月亮的桥,
  24. 或者在地上造二所宫殿或庙宇。活到中年,终于决定搭一个棚。

  25. 努力向上吧,星星就躲藏在你的灵魂深处;做一个悠远的梦吧,
  26. 每个梦想都会超越你的目标。
  27. 让青春反抗老朽,长发反抗秃头,
  28. 热情反抗陈腐,未来反抗往昔,这是多么自然!

  29. 梦想是一个人奋斗的动力,梦想是一个人动力的源泉。

  30. 要想成就伟业,除了梦想,必须行动。
  31. _END_
  32. #======================================================

  33.   def initialize(return_scene = nil)
  34.     if return_scene.nil?
  35.       @return_scene = Scene_Title.new
  36.     else
  37.       @return_scene = Scene_Map.new
  38.     end
  39.   end
  40.   
  41.   def scene_start
  42.     credit_lines = CREDIT.split(/\n/)
  43.     credit_bitmap = Bitmap.new(640,32 * credit_lines.size)
  44.     credit_lines.each_index do |i|
  45.       line = credit_lines [ i ]
  46.       credit_bitmap.draw_text(0,i * 32,640,32,line,1)
  47.     end
  48.     @credit_sprite = Sprite.new(Viewport.new(0,50,640,380))
  49.     @credit_sprite.bitmap = credit_bitmap
  50.     @credit_sprite.oy = -430
  51.     @frame_index = 0
  52.     @last_flag = false
  53.   end

  54.   def scene_end
  55.     @credit_sprite.dispose
  56.   end
  57.   
  58.   def last?
  59.     return (@frame_index >= @credit_sprite.bitmap.height + 480)
  60.   end
  61.   
  62.   def last
  63.     if not @last_flag
  64.       Audio.bgm_fade(10000)
  65.       @last_flag = true
  66.       @last_count = 0
  67.     else
  68.       @last_count += 1
  69.     end
  70.     if @last_count >= 300
  71.       $scene = @return_scene
  72.     end
  73.   end
  74.   
  75.   def update
  76.     @frame_index += 1
  77.     return if cancel?
  78.     last if last?
  79.     @credit_sprite.oy += 1
  80.   end

  81.   def cancel?
  82.     if Input.trigger?(Input::B)
  83.       $scene = @return_scene
  84.       return true
  85.     end
  86.     return false
  87.   end

  88.   def main
  89.     scene_start
  90.     # 过渡
  91.     Graphics.transition
  92.     # 主循环
  93.     loop do
  94.       Graphics.update
  95.       Input.update
  96.       update
  97.       if $scene != self
  98.         break
  99.       end
  100.     end
  101.     # 准备过渡
  102.     Graphics.freeze
  103.     scene_end
  104.   end
  105. end

  106. #==============================================================================
  107. # ■ Scene_Title 【改】
  108. #------------------------------------------------------------------------------
  109. #  处理标题画面的类。
  110. #   当选择新游戏时调用滚动字幕。
  111. #==============================================================================

  112. class Scene_Title
  113.   #--------------------------------------------------------------------------
  114.   # ● 命令 : 新游戏
  115.   #--------------------------------------------------------------------------
  116.   def command_new_game
  117.     # 演奏确定 SE
  118.     $game_system.se_play($data_system.decision_se)
  119.     # 停止 BGM
  120.     Audio.bgm_stop
  121.     # 重置测量游戏时间用的画面计数器
  122.     Graphics.frame_count = 0
  123.     # 生成各种游戏对像
  124.     $game_temp          = Game_Temp.new
  125.     $game_system        = Game_System.new
  126.     $game_switches      = Game_Switches.new
  127.     $game_variables     = Game_Variables.new
  128.     $game_self_switches = Game_SelfSwitches.new
  129.     $game_screen        = Game_Screen.new
  130.     $game_actors        = Game_Actors.new
  131.     $game_party         = Game_Party.new
  132.     $game_troop         = Game_Troop.new
  133.     $game_map           = Game_Map.new
  134.     $game_player        = Game_Player.new
  135.     # 设置初期同伴位置
  136.     $game_party.setup_starting_members
  137.     # 设置初期位置的地图
  138.     $game_map.setup($data_system.start_map_id)
  139.     # 主角向初期位置移动
  140.     $game_player.moveto($data_system.start_x, $data_system.start_y)
  141.     # 刷新主角
  142.     $game_player.refresh
  143.     # 执行地图设置的 BGM 与 BGS 的自动切换
  144.     $game_map.autoplay
  145.     # 刷新地图 (执行并行事件)
  146.     $game_map.update
  147.     # 切换地图画面
  148.     $scene = Scene_Credit.new(Scene_Map)
  149.   end
  150. end
复制代码

作者: 步兵中尉    时间: 2011-9-19 02:16
   我直接用图片移动来解决字幕问题。
  图片方便在字体、字形和字号都能随便修改,还不会出现BUG和不兼容的情况




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