Project1

标题: 截图脚本,但是只能截一张。请问如何无限制的截图? [打印本页]

作者: 爆焰    时间: 2012-7-30 05: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
复制代码
dsu_plus_rewardpost_czw
作者: 天使蛟龙    时间: 2012-7-30 09:28
用QQ截图怎么样?
作者: 七夕小雨    时间: 2012-7-30 09:58
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


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




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