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

Project1

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

[已经过期] 截图脚本,但是只能截一张。请问如何无限制的截图?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3176
在线时间
1442 小时
注册时间
2009-7-27
帖子
1454
跳转到指定楼层
1
发表于 2012-7-30 05:14:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题如标题,请高手为我解答。

  1. # 不知道是谁写的脚本,原脚本是用于截图存档的截图脚本,但是不足的地方就是当
  2. # 窗口标题变化(如测试时显示FPS时),就会截取屏幕右上角的图像。本人看了下,
  3. # 是获取窗口句柄的部分有问题,不知道这个问题已经有没有人修正过了,反正先放
  4. # 出来再说
  5.   
  6. #  使用说明: 截图存放目录,默认为 Save
  7. #  调用方法: Screen2::shot 存图文件名,种类,切割数量,存放目录
  8. #  种类: 1:bmp  2.ipg  3.png
  9. #  切割数量:  [1,1] : 不切割   [2,2] : 横向1刀,纵向一刀  [3,2] : 横向2刀,纵向1刀
  10. #              参数可以任意调整,最好切割的次数是游戏分辨率的约数
  11. #  




  12. #==============================================================================
  13. # ■ module Screen
  14. #------------------------------------------------------------------------------
  15. #  处理画面截图的模块。切割
  16. #==============================================================================

  17. module Screen2
  18.   # 声明 API
  19.   @screen = Win32API.new 'screenshot', 'Screenshot', %w(l l l l p l l), ''
  20.   @readini = Win32API.new 'kernel32', \
  21.   'GetPrivateProfileStringA', %w(p p p p l p), 'l'
  22.   @findwindow = Win32API.new 'user32', 'GetActiveWindow', '', 'l'
  23.   module_function
  24.   #--------------------------------------------------------------------------
  25.   # ● 截图
  26.   #--------------------------------------------------------------------------
  27.   def shot(file = "rplay", typ = 1,xy = nil,dir = "jt/")
  28.     # 根据类型生成扩展名
  29.     if typ == 0
  30.       typname = ".bmp"
  31.     elsif typ == 1
  32.       typname = ".jpg"
  33.     elsif typ == 2
  34.       typname = ".png"
  35.     end
  36.     # 生成文件名
  37.     file_name = dir + file.to_s + typname.to_s
  38.     # 生成截图文件(x,y,width,height,文件名,窗口句柄,类型)
  39.    unless xy == nil
  40.     w = xy[0]
  41.     h = xy[1]
  42.     ww = 640 / w
  43.     hh = 480 / h
  44.     index = 0
  45.     阵 = []
  46.     for www in 1..w
  47.       for hhh in 1..h
  48.         index += 1
  49.         x = ( www - 1 ) * ww
  50.         y = ( hhh - 1 ) * hh
  51.         file_name = dir + file.to_s + index.to_s+typname.to_s
  52.         @screen.call(x,y,ww,hh,file_name ,handel,typ)
  53.         阵.push([file_name,x,y])
  54.       end
  55.     end
  56.     save_data(阵,dir + file.to_s + ".info")
  57.    else
  58.     # 生成文件名
  59.     file_name = dir + file.to_s + typname.to_s
  60.     # 生成截图文件(x,y,width,height,文件名,窗口句柄,类型)
  61.     @screen.call(0,0,640,480,file_name,handel,typ)
  62.     end
  63.   end
  64.   #--------------------------------------------------------------------------
  65.   # ● 获取游戏窗口句柄
  66.   #--------------------------------------------------------------------------
  67.   def handel
  68.     return @findwindow.call()
  69.   end
  70. end
复制代码

博客:我的博客

Lv1.梦旅人

梦石
0
星屑
165
在线时间
0 小时
注册时间
2012-7-30
帖子
1
2
发表于 2012-7-30 09:28:27 | 只看该作者
用QQ截图怎么样?
回复

使用道具 举报

Lv3.寻梦者

昨日的黄昏

梦石
0
星屑
1005
在线时间
937 小时
注册时间
2006-11-5
帖子
4128

第2届短篇游戏比赛季军第3届短篇游戏大赛小游戏及其他组季军

3
发表于 2012-7-30 09:58:13 | 只看该作者
sum = 0
loop do
  sum++
  Screen2::shot("pic#{sum}")
  break if sum > n
end

n张截图,不过都是一样的,我估计楼主想要的效果是能截出来类似动画片的东西

那么只需要把脚本送入响应的scene的update就好了

比如在Scene_map中的update添加
Screen2::shot("pic#{@sum}")
Scene_map的main最下面添加@sum = 0


另外,很有可能会卡死= =,毕竟每帧都在截图

点评

不用动画片效果,就比如设置按A键是截图。相当于照相的功能,但是这个脚本结果一个后再截的话就会覆盖掉第一张。只能截一张。我想可以无限截。  发表于 2012-7-30 16:29

评分

参与人数 1星屑 +100 收起 理由
hcm + 100 感谢回答

查看全部评分

[url=http://weibo.com/2238291690?s=6uyXnP]
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-23 13:36

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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