查看: 4312|回复: 19

[已经解决] 鼠标响应图片菜单时不触发自动寻径

  [复制链接]

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
回帖
670
发表于 2009-8-5 16:41:02 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 奶油Da蛋糕 于 2009-8-8 12:50 编辑

未命名.JPG
做了一个纯鼠标的菜单。
把原来的X的菜单删掉了。
基本上兼容的问题差不多解决了。
但是还有两个问题。
这个菜单有三态效果哟,美观度还是挺好的。
这个菜单就是用简单的鼠标响应事件做的。
就是键盘的update里面判定鼠标位置和鼠标是否按下而已。
但是我发现一个问题。
就是点了这个菜单之后。
鼠标仍然会触发自动寻径。
这样很麻烦。
明明点的是菜单。
但是角色却会往那边跑。
我想过把这几个有鼠标响应图片的坐标排除出去。这样就不会触发自动寻径了。
但是。
如果这样的话。
在图片菜单不显示的时候也不会触发自动寻径了。
(因为有的时候禁止菜单呀,还有主角没有选择的时候,右上角和右下角的菜单都会不显示。)
有什么办法可以只在图片显示的时候把自动寻径DEL掉呢?

另外。
还有一个比较严重。
但是偶然性比较大的问题。
就是。
如果你鼠标点的次数多。
移动的快了的话。
游戏可能会发生意外。
(可能是反复判定那么多图片菜单的问题)
导致可能会在游戏中随机出现
(多数是鼠标忙的情况下)
不过几率比较大,基本上5分钟内必出。
没法儿玩。

---------------------------
梦想逍遥游
---------------------------
脚本 '完整鼠标系统(四方向)' 的 39 行 发生了 NoMethodError。

undefined method `size' for nil:NilClass
---------------------------
确定   
---------------------------
  1. #--------------------------------------------------------------------------
  2.   # ● 检查鼠标处是否有自定义的事件并返回类型
  3.   #--------------------------------------------------------------------------
  4.   def check_event_custom(mouse_x, mouse_y)
  5.     for event in $game_map.events.values #循环所有事件检查
  6.       event_width = RPG::Cache.character(event.character_name,event.character_hue).width / 4
  7.       event_height = RPG::Cache.character(event.character_name,event.character_hue).height / 4
  8.       if mouse_x > event.screen_x - event_width / 2 and mouse_x < event.screen_x + event_width / 2 and mouse_y + 32 > event.screen_y + 32 - event_height and mouse_y + 32 < event.screen_y + 32
  9.         for i in 0...event.list.size
  10.           if event.list[i].parameters[0] == "Item" #类型判断
  11.             event.flag = 1
  12.           elsif event.list[i].parameters[0] == "Npc" #类型判断
  13.             event.flag = 2
  14.           else
  15.             event.flag = 0 if $game_player.get_mouse_sta != 2 #无标志
  16.           end
  17.           return event.flag #返回事件类型标志
  18.         end
  19.       end
  20.     end
  21.     return 0 if $game_player.get_mouse_sta != 2 #如果不是在跟随鼠标状态,则返回无标志
  22.     return $mouse_icon_id #使鼠标图不变化
  23.   end
复制代码
SIZE没理由会nil啊。
怎么回事

奇怪。
奇怪。
奇怪。

孤独守望

梦石
0
星屑
3144
在线时间
1535 小时
注册时间
2006-10-16
回帖
4223

开拓者贵宾

发表于 2009-8-5 17:01:05 | 显示全部楼层
Scene_Map的update内刷新窗口以前写入
假设你的窗口叫做@command_window
x,y = Mouse.get_mouse_pos(或类似的名字)
if x > @command_window.x and x < @command_window.x + @command_window.width and y > @command_window.y and y < @command_window.y + @command_window.height (断行自己去掉回车)
Mouse.lock(或类似名字)
else
Mouse.unlock(或类似名字)
end
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复

使用道具 举报

女神控

梦石
0
星屑
49
在线时间
141 小时
注册时间
2008-9-24
回帖
1384
发表于 2009-8-5 17:02:39 | 显示全部楼层
游戏很华丽
回复

使用道具 举报

v

梦石
0
星屑
50
在线时间
55 小时
注册时间
2007-12-19
回帖
97
发表于 2009-8-5 17:06:09 | 显示全部楼层
我想过把这几个有鼠标响应图片的坐标排除出去。这样就不会触发自动寻径了。
但是。
如果这样的话。
在图片菜单不显示的时候也不会触发自动寻径了。
(因为有的时候禁止菜单呀,还有主角没有选择的时候,右上角和右下角的菜单都会不显示。)
有什么办法可以只在图片显示的时候把自动寻径DEL掉呢?
既然能把坐标排除出去,就也能判断现在是否已经禁用菜单,只有在菜单可用的时候才排除某些坐标

至于第二个,你有用什么人物跟随脚本吗?
回复

使用道具 举报

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
回帖
670
 楼主| 发表于 2009-8-5 17:15:16 | 显示全部楼层
既然能把坐标排除出去,就也能判断现在是否已经禁用菜单,只有在菜单可用的时候才排除某些坐标

至于第二个,你有用什么人物跟随脚本吗?
veal 发表于 2009-8-5 17:06


呃,那个只是“我想”罢了。实践起来还是很混沌。只是把自己的想法和需要注意的事情告诉一下而已。( = =因为其实我是只脚本盲!)
关于人物跟随脚本,我不太明白是什么诶。
貌似没用哟。
不过在上个月有打算用,一直没时间用。
回复

使用道具 举报

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
回帖
670
 楼主| 发表于 2009-8-5 18:43:27 | 显示全部楼层
Scene_Map的update内刷新窗口以前写入
假设你的窗口叫做@command_window
IamI 发表于 2009-8-5 17:01


X坐标是nil

和解???
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2005-11-17
回帖
16
发表于 2009-8-6 10:08:57 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2005-11-17
回帖
16
发表于 2009-8-6 10:13:28 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
回帖
670
 楼主| 发表于 2009-8-6 10:40:15 | 显示全部楼层
第一个问题解决思路:
先定义一个变量:attr_accessor :menu_showing
在你的鼠标菜单中写一个@menu_showing的函数,打开菜单时是true,否则为false
在你的鼠标update里面判断他$xxxx.menu_showing为true时就return ...
咳嗽的夜鸟 发表于 2009-8-6 10:08


这个思路不能理解。
请宽恕我只是脚本盲。
第二个问题已经解决了。
在for i in 0...event.list.size前面加了条件分歧if event.list.size != nil
回复

使用道具 举报

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
回帖
670
 楼主| 发表于 2009-8-6 15:05:35 | 显示全部楼层
自顶一次
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部