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

Project1

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

[已经过期] 对话框不影响行动脚本的BUG

 关闭 [复制链接]

Lv4.逐梦者

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
帖子
2402
跳转到指定楼层
1
发表于 2009-12-9 10:36:31 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 幻耶 于 2009-12-9 10:57 编辑

下面这段脚本的功能是让事件在走动的时候也能说话,也就是让对话框不影响角色和事件的行动,通过事件用脚本 popMessage(50,"对话!") 来调用,但是发现调出对话框但是对话框还没消失的时候如果角色场所移动到了别的地图就如下图出错了,有什么方法解决么?
  1. class Window_PopMessage < Window_Base
  2.   def initialize(id, frames, str)
  3.     @id = id
  4.     @frames = frames
  5.     @pop_fade = 0
  6.     strs = str.split(/$/m)
  7.     temp = Bitmap.new(1, 1)
  8.     temp.font.size = 16
  9.     max_w = 0
  10.     rects = []
  11.     for i in 0...strs.length
  12.       rects.push(temp.text_size(strs[i]))      
  13.       width = rects[i].width
  14.       if width > max_w
  15.         max_w = width
  16.       end
  17.     end
  18.     temp.dispose
  19.     max_h = strs.length * 20
  20.     super($game_map.events[@id].screen_x - ((max_w + 32) >> 1),
  21.       $game_map.events[@id].screen_y - max_h - 96,
  22.       max_w + 32, max_h + 32)
  23.     self.contents = Bitmap.new(max_w, max_h)
  24.     self.contents.font.size = 16
  25.     self.z = 1000
  26.     self.opacity = 0
  27.     self.contents_opacity = 0
  28.     for i in 0...strs.length
  29.       rects[i].y = i * 20
  30.       self.contents.draw_text(rects[i], strs[i])
  31.     end
  32.   end
  33.   
  34.   def update
  35.     self.x = $game_map.events[@id].screen_x - (self.width >> 1)
  36.     self.y = $game_map.events[@id].screen_y - self.height - 64
  37.     if @pop_fade == 0
  38.       self.opacity += 10
  39.       self.contents_opacity += 10
  40.       @pop_fade = 1 if self.contents_opacity >= 255
  41.     elsif @pop_fade == 2
  42.       self.opacity -= 10
  43.       self.contents_opacity -= 10
  44.       dispose if self.contents_opacity <= 0
  45.     else
  46.       @frames -= 1
  47.       @pop_fade = 2 if @frames <= 0
  48.     end
  49.   end
  50. end

  51. class Scene_Map
  52.   attr_accessor :pop_windows
  53.   alias main_original main unless method_defined? :main_original
  54.   def main
  55.     @pop_windows = []
  56.     main_original
  57.     for i in @pop_windows      
  58.       i.dispose unless i.disposed?
  59.     end
  60.   end

  61.   alias update_original update unless method_defined? :update_original
  62.   def update
  63.     i = 0
  64.     while i < @pop_windows.length
  65.       if @pop_windows[i].disposed?
  66.         @pop_windows.delete_at(i)
  67.       else
  68.         @pop_windows[i].update
  69.       end
  70.       i += 1
  71.     end
  72.     update_original
  73.   end
  74. end

  75. class Interpreter
  76.   def popMessage(frames, str)
  77.     if !$scene.is_a?(Scene_Map)
  78.       return
  79.     end
  80.     $scene.pop_windows.push(Window_PopMessage.new(@event_id, frames, str))
  81.   end
  82. end
复制代码

00.jpg (9.45 KB, 下载次数: 5)

00.jpg
囡囚囨囚囨図囨囧

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1697
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

2
发表于 2009-12-9 11:07:57 | 只看该作者
原因很简单。
移动地图以后,此脚本找不到事件,肯定找不到事件的XY坐标。
建议对此做一下防御
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
帖子
2402
3
 楼主| 发表于 2009-12-9 11:17:29 | 只看该作者
那应该加一个什么分歧判断呢?if 场景转换了?
囡囚囨囚囨図囨囧
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
帖子
2402
4
 楼主| 发表于 2009-12-10 09:35:46 | 只看该作者
顶~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-2 01:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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