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

Project1

 找回密码
 注册会员
搜索
查看: 2048|回复: 3
打印 上一主题 下一主题

[已经过期] 使用SideView100野外播放动画出现问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
96
在线时间
32 小时
注册时间
2015-1-5
帖子
44
跳转到指定楼层
1
发表于 2017-9-13 21:10:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x


代码如下:
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Window_Message
  3. #------------------------------------------------------------------------------
  4. #  文章表示に使うメッセージウィンドウです。
  5. #==============================================================================
  6.  
  7. class Window_Message < Window_Base
  8.   #--------------------------------------------------------------------------
  9.   # ● オブジェクト初期化
  10.   #--------------------------------------------------------------------------
  11.   def initialize
  12.     super(0, 0, window_width, window_height)
  13.     self.z = 200
  14.     self.openness = 0
  15.     create_all_windows
  16.     create_back_bitmap
  17.     create_back_sprite
  18.     clear_instance_variables
  19.   end
  20.   #--------------------------------------------------------------------------
  21.   # ● ウィンドウ幅の取得
  22.   #--------------------------------------------------------------------------
  23.   def window_width
  24.     Graphics.width
  25.   end
  26.   #--------------------------------------------------------------------------
  27.   # ● ウィンドウ高さの取得
  28.   #--------------------------------------------------------------------------
  29.   def window_height
  30.     fitting_height(visible_line_number)
  31.   end
  32.   #--------------------------------------------------------------------------
  33.   # ● インスタンス変数のクリア
  34.   #--------------------------------------------------------------------------
  35.   def clear_instance_variables
  36.     @fiber = nil                # ファイバー
  37.     @background = 0             # 背景タイプ
  38.     @position = 2               # 表示位置
  39.     clear_flags
  40.   end
  41.   #--------------------------------------------------------------------------
  42.   # ● フラグのクリア
  43.   #--------------------------------------------------------------------------
  44.   def clear_flags
  45.     @show_fast = false          # 早送りフラグ
  46.     @line_show_fast = false     # 行単位早送りフラグ
  47.     @pause_skip = false         # 入力待ち省略フラグ
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # ● 表示行数の取得
  51.   #--------------------------------------------------------------------------
  52.   def visible_line_number
  53.     return 4
  54.   end
  55.   #--------------------------------------------------------------------------
  56.   # ● 解放
  57.   #--------------------------------------------------------------------------
  58.   def dispose
  59.     super
  60.     dispose_all_windows
  61.     dispose_back_bitmap
  62.     dispose_back_sprite
  63.   end
  64.   #--------------------------------------------------------------------------
  65.   # ● フレーム更新
  66.   #--------------------------------------------------------------------------
  67.   def update
  68.     super
  69.     update_all_windows
  70.     update_back_sprite
  71.     update_fiber
  72.   end
  73.   #--------------------------------------------------------------------------
  74.   # ● ファイバーの更新
  75.   #--------------------------------------------------------------------------
  76.   def update_fiber
  77.     if @fiber
  78.       @fiber.resume
  79.     elsif $game_message.busy? && !$game_message.scroll_mode
  80.       @fiber = Fiber.new { fiber_main }
  81.       @fiber.resume
  82.     else
  83.       $game_message.visible = false
  84.     end
  85.   end
  86.   #--------------------------------------------------------------------------
  87.   # ● 全ウィンドウの作成
  88.   #--------------------------------------------------------------------------
  89.   def create_all_windows
  90.     @gold_window = Window_Gold.new
  91.     @gold_window.x = Graphics.width - @gold_window.width
  92.     @gold_window.y = 0
  93.     @gold_window.openness = 0
  94.     @choice_window = Window_ChoiceList.new(self)
  95.     @number_window = Window_NumberInput.new(self)
  96.     @item_window = Window_KeyItem.new(self)
  97.   end
  98.   #--------------------------------------------------------------------------
  99.   # ● 背景ビットマップの作成
  100.   #--------------------------------------------------------------------------
  101.   def create_back_bitmap
  102.     @back_bitmap = Bitmap.new(width, height)
  103.     rect1 = Rect.new(0, 0, width, 12)
  104.     rect2 = Rect.new(0, 12, width, height - 24)
  105.     rect3 = Rect.new(0, height - 12, width, 12)
  106.     @back_bitmap.gradient_fill_rect(rect1, back_color2, back_color1, true)
  107.     @back_bitmap.fill_rect(rect2, back_color1)
  108.     @back_bitmap.gradient_fill_rect(rect3, back_color1, back_color2, true)
  109.   end
  110.   #--------------------------------------------------------------------------
  111.   # ● 背景色 1 の取得
  112.   #--------------------------------------------------------------------------
  113.   def back_color1
  114.     Color.new(0, 0, 0, 160)
  115.   end
  116.   #--------------------------------------------------------------------------
  117.   # ● 背景色 2 の取得
  118.   #--------------------------------------------------------------------------
  119.   def back_color2
  120.     Color.new(0, 0, 0, 0)
  121.   end
  122.   #--------------------------------------------------------------------------
  123.   # ● 背景スプライトの作成
  124.   #--------------------------------------------------------------------------
  125.   def create_back_sprite
  126.     @back_sprite = Sprite.new
  127.     @back_sprite.bitmap = @back_bitmap
  128.     @back_sprite.visible = false
  129.     @back_sprite.z = z - 1
  130.   end
  131.   #--------------------------------------------------------------------------
  132.   # ● 全ウィンドウの解放
  133.   #--------------------------------------------------------------------------
  134.   def dispose_all_windows
  135.     @gold_window.dispose
  136.     @choice_window.dispose
  137.     @number_window.dispose
  138.     @item_window.dispose
  139.   end
  140.   #--------------------------------------------------------------------------
  141.   # ● 背景ビットマップの解放
  142.   #--------------------------------------------------------------------------
  143.   def dispose_back_bitmap
  144.     @back_bitmap.dispose
  145.   end
  146.   #--------------------------------------------------------------------------
  147.   # ● 背景スプライトの解放
  148.   #--------------------------------------------------------------------------
  149.   def dispose_back_sprite
  150.     @back_sprite.dispose
  151.   end
  152.   #--------------------------------------------------------------------------
  153.   # ● 全ウィンドウの更新
  154.   #--------------------------------------------------------------------------
  155.   def update_all_windows
  156.     @gold_window.update
  157.     @choice_window.update
  158.     @number_window.update
  159.     @item_window.update
  160.   end
  161.   #--------------------------------------------------------------------------
  162.   # ● 背景スプライトの更新
  163.   #--------------------------------------------------------------------------
  164.   def update_back_sprite
  165.     @back_sprite.visible = (@background == 1)
  166.     @back_sprite.y = y
  167.     @back_sprite.opacity = openness
  168.     @back_sprite.update
  169.   end
  170.   #--------------------------------------------------------------------------
  171.   # ● ファイバーのメイン処理
  172.   #--------------------------------------------------------------------------
  173.   def fiber_main
  174.     $game_message.visible = true
  175.     update_background
  176.     update_placement
  177.     loop do
  178.       process_all_text if $game_message.has_text?
  179.       process_input
  180.       $game_message.clear
  181.       @gold_window.close
  182.       Fiber.yield
  183.       break unless text_continue?
  184.     end
  185.     close_and_wait
  186.     $game_message.visible = false
  187.     @fiber = nil
  188.   end
  189.   #--------------------------------------------------------------------------
  190.   # ● ウィンドウ背景の更新
  191.   #--------------------------------------------------------------------------
  192.   def update_background
  193.     @background = $game_message.background
  194.     self.opacity = @background == 0 ? 255 : 0
  195.   end
  196.   #--------------------------------------------------------------------------
  197.   # ● ウィンドウ位置の更新
  198.   #--------------------------------------------------------------------------
  199.   def update_placement
  200.     @position = $game_message.position
  201.     self.y = @position * (Graphics.height - height) / 2
  202.     @gold_window.y = y > 0 ? 0 : Graphics.height - @gold_window.height
  203.   end
  204.   #--------------------------------------------------------------------------
  205.   # ● 全テキストの処理
  206.   #--------------------------------------------------------------------------
  207.   def process_all_text
  208.     open_and_wait
  209.     text = convert_escape_characters($game_message.all_text)
  210.     pos = {}
  211.     new_page(text, pos)
  212.     process_character(text.slice!(0, 1), text, pos) until text.empty?
  213.   end
  214.   #--------------------------------------------------------------------------
  215.   # ● 入力処理
  216.   #--------------------------------------------------------------------------
  217.   def process_input
  218.     if $game_message.choice?
  219.       input_choice
  220.     elsif $game_message.num_input?
  221.       input_number
  222.     elsif $game_message.item_choice?
  223.       input_item
  224.     else
  225.       input_pause unless @pause_skip
  226.     end
  227.   end
  228.   #--------------------------------------------------------------------------
  229.   # ● ウィンドウを開き、完全に開くまで待つ
  230.   #--------------------------------------------------------------------------
  231.   def open_and_wait
  232.     open
  233.     Fiber.yield until open?
  234.   end
  235.   #--------------------------------------------------------------------------
  236.   # ● ウィンドウを閉じ、完全に閉じるまで待つ
  237.   #--------------------------------------------------------------------------
  238.   def close_and_wait
  239.     close
  240.     Fiber.yield until all_close?
  241.   end
  242.   #--------------------------------------------------------------------------
  243.   # ● 全ウィンドウが完全に閉じているか判定
  244.   #--------------------------------------------------------------------------
  245.   def all_close?
  246.     close? && @choice_window.close? &&
  247.     @number_window.close? && @item_window.close?
  248.   end
  249.   #--------------------------------------------------------------------------
  250.   # ● 文章を続けて表示するか判定
  251.   #--------------------------------------------------------------------------
  252.   def text_continue?
  253.     $game_message.has_text? && !settings_changed?
  254.   end
  255.   #--------------------------------------------------------------------------
  256.   # ● 背景と位置の変更判定
  257.   #--------------------------------------------------------------------------
  258.   def settings_changed?
  259.     @background != $game_message.background ||
  260.     @position != $game_message.position
  261.   end
  262.   #--------------------------------------------------------------------------
  263.   # ● ウェイト
  264.   #--------------------------------------------------------------------------
  265.   def wait(duration)
  266.     duration.times { Fiber.yield }
  267.   end
  268.   #--------------------------------------------------------------------------
  269.   # ● 早送りフラグの更新
  270.   #--------------------------------------------------------------------------
  271.   def update_show_fast
  272.     @show_fast = true if Input.trigger?(:C)
  273.   end
  274.   #--------------------------------------------------------------------------
  275.   # ● 一文字出力後のウェイト
  276.   #--------------------------------------------------------------------------
  277.   def wait_for_one_character
  278.     update_show_fast
  279.     Fiber.yield unless @show_fast || @line_show_fast
  280.   end
  281.   #--------------------------------------------------------------------------
  282.   # ● 改ページ処理
  283.   #--------------------------------------------------------------------------
  284.   def new_page(text, pos)
  285.     contents.clear
  286.     draw_face($game_message.face_name, $game_message.face_index, 0, 0)
  287.     reset_font_settings
  288.     pos[:x] = new_line_x
  289.     pos[:y] = 0
  290.     pos[:new_x] = new_line_x
  291.     pos[:height] = calc_line_height(text)
  292.     clear_flags
  293.   end
  294.   #--------------------------------------------------------------------------
  295.   # ● 改行位置の取得
  296.   #--------------------------------------------------------------------------
  297.   def new_line_x
  298.     $game_message.face_name.empty? ? 0 : 112
  299.   end
  300.   #--------------------------------------------------------------------------
  301.   # ● 通常文字の処理
  302.   #--------------------------------------------------------------------------
  303.   def process_normal_character(c, pos)
  304.     super
  305.     wait_for_one_character
  306.   end
  307.   #--------------------------------------------------------------------------
  308.   # ● 改行文字の処理
  309.   #--------------------------------------------------------------------------
  310.   def process_new_line(text, pos)
  311.     @line_show_fast = false
  312.     super
  313.     if need_new_page?(text, pos)
  314.       input_pause
  315.       new_page(text, pos)
  316.     end
  317.   end
  318.   #--------------------------------------------------------------------------
  319.   # ● 改ページが必要か判定
  320.   #--------------------------------------------------------------------------
  321.   def need_new_page?(text, pos)
  322.     pos[:y] + pos[:height] > contents.height && !text.empty?
  323.   end
  324.   #--------------------------------------------------------------------------
  325.   # ● 改ページ文字の処理
  326.   #--------------------------------------------------------------------------
  327.   def process_new_page(text, pos)
  328.     text.slice!(/^\n/)
  329.     input_pause
  330.     new_page(text, pos)
  331.   end
  332.   #--------------------------------------------------------------------------
  333.   # ● 制御文字によるアイコン描画の処理
  334.   #--------------------------------------------------------------------------
  335.   def process_draw_icon(icon_index, pos)
  336.     super
  337.     wait_for_one_character
  338.   end
  339.   #--------------------------------------------------------------------------
  340.   # ● 制御文字の処理
  341.   #     code : 制御文字の本体部分(「\C[1]」なら「C」)
  342.   #     text : 描画処理中の文字列バッファ(必要なら破壊的に変更)
  343.   #     pos  : 描画位置 {:x, :y, :new_x, :height}
  344.   #
  345.   #--------------------------------------------------------------------------
  346.   def process_escape_character(code, text, pos)
  347.     case code.upcase
  348.     when '$'
  349.       @gold_window.open
  350.     when '.'
  351.       wait(15)
  352.     when '|'
  353.       wait(60)
  354.     when '!'
  355.       input_pause
  356.     when '>'
  357.       @line_show_fast = true
  358.     when '<'
  359.       @line_show_fast = false
  360.     when '^'
  361.       @pause_skip = true
  362.     else
  363.       super
  364.     end
  365.   end
  366.   #--------------------------------------------------------------------------
  367.   # ● 入力待ち処理
  368.   #--------------------------------------------------------------------------
  369.   def input_pause
  370.     self.pause = true
  371.     wait(10)
  372.     Fiber.yield until Input.trigger?(:B) || Input.trigger?(:C)
  373.     Input.update
  374.     self.pause = false
  375.   end
  376.   #--------------------------------------------------------------------------
  377.   # ● 選択肢の入力処理
  378.   #--------------------------------------------------------------------------
  379.   def input_choice
  380.     @choice_window.start
  381.     Fiber.yield while @choice_window.active
  382.   end
  383.   #--------------------------------------------------------------------------
  384.   # ● 数値の入力処理
  385.   #--------------------------------------------------------------------------
  386.   def input_number
  387.     @number_window.start
  388.     Fiber.yield while @number_window.active
  389.   end
  390.   #--------------------------------------------------------------------------
  391.   # ● アイテムの選択処理
  392.   #--------------------------------------------------------------------------
  393.   def input_item
  394.     @item_window.start
  395.     Fiber.yield while @item_window.active
  396.   end
  397. end

10001540 201501101508529.png (5.19 KB, 下载次数: 16)

10001540 201501101508529.png

Lv1.梦旅人

梦石
0
星屑
96
在线时间
32 小时
注册时间
2015-1-5
帖子
44
2
 楼主| 发表于 2017-9-13 21:11:07 | 只看该作者
麻烦大家给解答一下谢谢
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
878
在线时间
576 小时
注册时间
2010-6-26
帖子
793
3
发表于 2017-9-14 15:39:06 | 只看该作者
技能名显示相关的问题?
回复 支持 反对

使用道具 举报

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9397
在线时间
2748 小时
注册时间
2008-9-5
帖子
3543

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

4
发表于 2017-9-15 21:48:22 | 只看该作者
这个看起来像是对话文章里的正则用了全角符号弹的错误
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 18:29

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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