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

Project1

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

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

 关闭 [复制链接]

Lv1.梦旅人

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
帖子
787
跳转到指定楼层
1
发表于 2009-8-5 16:41:02 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

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


做了一个纯鼠标的菜单。
把原来的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啊。
怎么回事

奇怪。
奇怪。
奇怪。

Lv3.寻梦者

孤独守望

梦石
0
星屑
3121
在线时间
1534 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

2
发表于 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
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

Lv1.梦旅人

女神控

梦石
0
星屑
49
在线时间
141 小时
注册时间
2008-9-24
帖子
1455
3
发表于 2009-8-5 17:02:39 | 只看该作者
游戏很华丽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

v

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

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

使用道具 举报

Lv1.梦旅人

℃ake

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

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


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

使用道具 举报

Lv1.梦旅人

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
帖子
787
6
 楼主| 发表于 2009-8-5 18:43:27 | 只看该作者
Scene_Map的update内刷新窗口以前写入
假设你的窗口叫做@command_window
IamI 发表于 2009-8-5 17:01


X坐标是nil

和解???
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2005-11-17
帖子
18
7
发表于 2009-8-6 10:08:57 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2005-11-17
帖子
18
8
发表于 2009-8-6 10:13:28 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
帖子
787
9
 楼主| 发表于 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
回复 支持 反对

使用道具 举报

Lv1.梦旅人

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
帖子
787
10
 楼主| 发表于 2009-8-6 15:05:35 | 只看该作者
自顶一次
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-29 20:12

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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