Project1

标题: 鼠标卷屏效果 [打印本页]

作者: 幻の飞鱼    时间: 2007-6-28 05:17
标题: 鼠标卷屏效果
自己的《断指守卫》需要这个效果就做了

MS以前看到有人要,也不知道有人做过没

自己做的时候才发现,原来这么简单就可以了- -||寒一下

使用的时候还需要配合一个鼠标脚本,主战上任何一个脚本似乎都可以

范例:http://rpg.blue/upload_program/files/鼠标卷屏.rar

  1. class Scene_Map
  2.   alias old update
  3.   def update
  4.     @by = 32 #感应鼠标边缘的范围
  5.     @speed = 64 #移动速度
  6.     mx,my = Mouse.get_mouse_pos
  7.     move_r if mx>640-@by
  8.     move_l if mx<@by
  9.     move_u if my<@by
  10.     move_d if my>480-@by
  11.     old
  12.   end
  13.   def move_r
  14.     $game_map.scroll_right(@speed)
  15.   end  
  16.   def move_l
  17.     $game_map.scroll_left(@speed)
  18.   end  
  19.   def move_u
  20.     $game_map.scroll_up(@speed)
  21.   end  
  22.   def move_d
  23.     $game_map.scroll_down(@speed)
  24.   end  

  25. end
复制代码

作者: 幻の飞鱼    时间: 2007-6-28 05:17
标题: 鼠标卷屏效果
自己的《断指守卫》需要这个效果就做了

MS以前看到有人要,也不知道有人做过没

自己做的时候才发现,原来这么简单就可以了- -||寒一下

使用的时候还需要配合一个鼠标脚本,主战上任何一个脚本似乎都可以

范例:http://rpg.blue/upload_program/files/鼠标卷屏.rar

  1. class Scene_Map
  2.   alias old update
  3.   def update
  4.     @by = 32 #感应鼠标边缘的范围
  5.     @speed = 64 #移动速度
  6.     mx,my = Mouse.get_mouse_pos
  7.     move_r if mx>640-@by
  8.     move_l if mx<@by
  9.     move_u if my<@by
  10.     move_d if my>480-@by
  11.     old
  12.   end
  13.   def move_r
  14.     $game_map.scroll_right(@speed)
  15.   end  
  16.   def move_l
  17.     $game_map.scroll_left(@speed)
  18.   end  
  19.   def move_u
  20.     $game_map.scroll_up(@speed)
  21.   end  
  22.   def move_d
  23.     $game_map.scroll_down(@speed)
  24.   end  

  25. end
复制代码

作者: 神思    时间: 2007-6-28 06:11
其实可以把ClipCursor这个函数给考虑进去``这样鼠标就不会离开窗口了`

  1. class String
  2.   MultiByteToWideChar = Win32API.new("kernel32", "MultiByteToWideChar", "llplpl", "l")
  3.   WideCharToMultiByte = Win32API.new("kernel32", "WideCharToMultiByte", "llplplpp", "l")
  4.   CP_ACP = 0
  5.   CP_UTF8 = 65001
  6.   #--------------------------------------------------------------------------
  7.   # ● UTF-8转JIS
  8.   #--------------------------------------------------------------------------
  9.   def to_jis
  10.    
  11.     # UTF-8 -> Unicode
  12.     len = MultiByteToWideChar.call(CP_UTF8, 0, self, -1, nil, 0);
  13.     buf = "\0" * (len*2)
  14.     MultiByteToWideChar.call(CP_UTF8, 0, self, -1, buf, buf.size/2);

  15.     # Unicode -> S-JIS
  16.     len = WideCharToMultiByte.call(CP_ACP, 0, buf, -1, nil, 0, nil, nil);
  17.     ret = "\0" * len
  18.     WideCharToMultiByte.call(CP_ACP, 0, buf, -1, ret, ret.size, nil, nil);
  19.    
  20.     return ret
  21.   end
  22. end
  23. # 窗口名字
  24. WindowClassName = "鼠标卷屏".to_jis
  25. ClipCursor = Win32API.new("user32", "ClipCursor", "p", "l")
  26. ClientToScreen = Win32API.new("user32", "ClientToScreen", "lp", "l")
  27. FindWindow = Win32API.new("user32", "FindWindow", "pp", "l")
  28. HWnd = FindWindow.call("RGSS Player",WindowClassName)
  29. xy = [0, 0].pack("l*")
  30. ClientToScreen.call(HWnd, xy)
  31. x,y = xy.unpack("l*")
  32. rect = [x, y, 640+x, 480+y].pack("l*")
  33. ClipCursor.call(rect)





  34. class Scene_Map
  35. alias old update
  36. def update
  37.    @by = 32 #感应鼠标边缘的范围
  38.    @speed = 64 #移动速度
  39.    mx,my = Mouse.get_mouse_pos
  40.    move_r if mx>640-@by
  41.    move_l if mx<@by
  42.    move_u if my<@by
  43.    move_d if my>480-@by
  44.    old
  45. end
  46. def move_r
  47.    $game_map.scroll_right(@speed)
  48. end  
  49. def move_l
  50.    $game_map.scroll_left(@speed)
  51. end  
  52. def move_u
  53.    $game_map.scroll_up(@speed)
  54. end  
  55. def move_d
  56.    $game_map.scroll_down(@speed)
  57. end  

  58. end
复制代码




另外```LZ进步的飞快啊````{/qiang}{/qiang}
作者: 幻の飞鱼    时间: 2007-6-28 07:45
谢了,偶抛砖引玉了,收回去加工游戏去
不过那个ClipCursor又是API啊,完全看不懂- -||{/gg}

PS:点不到最小化和X了,不过似乎不是大问题,都可以用键盘代替
作者: 弗洛多    时间: 2007-6-28 07:46
提示: 作者被禁止或删除 内容自动屏蔽
作者: 莫浪语    时间: 2007-6-28 11:02
别吓我 ,我的即使战略{/se}
作者: beiduo    时间: 2007-7-2 18:42
非常实用的脚本,谢谢!
作者: 墨霖    时间: 2008-1-31 22:00
{/pz}花眼了~~~




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