赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 0 |
经验 | 4355 |
最后登录 | 2012-7-20 |
在线时间 | 282 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 45
- 在线时间
- 282 小时
- 注册时间
- 2012-2-18
- 帖子
- 161
|
本帖最后由 dabojun 于 2012-5-24 20:49 编辑
理想中的游戏开机视窗应该是:1、可调控大小和长宽的矩形窗口,例如:1024*312的长卷式游戏视窗。
2、视窗能够展现游戏地图图块设置的全景,可以理解为分辨率的变化。不要截景(所谓”截景“为:只截取游戏视窗的一部分(视窗改小时))。
3、开机游戏时先显示原始视窗再跳转到长卷视窗的画面不可以出现哟~@(很影响效果…)
4、开机游戏时新视窗需要在电脑屏幕内,正中,或靠上一点的位置。(试过几个脚本新视窗打开后一部分都跑到电脑屏幕外了,影响效果的说…)
接下来是楼主对于几个试用过的脚本的简单评测,希望能对大家起到一点帮助~
首先是这段“窗口大小”:
#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================
# ————————————————————————————————————
# 本脚本来自www.66rpg.com,转载请保留此信息
# ————————————————————————————————————
#ウィンドウサイズの変更(v1.00)
class Win32API
GAME_INI_FILE = ".\\Game.ini"
def Win32API.GetPrivateProfileString(section, key)
val = "\0"*256
gps = Win32API.new('kernel32', 'GetPrivateProfileString',%w(p p p p l p), 'l')
gps.call(section, key, "", val, 256, GAME_INI_FILE)
val.delete!("\0")
return val
end
def Win32API.FindWindow(class_name, title)
fw = Win32API.new('user32', 'FindWindow', %(p, p), 'i')
hWnd = fw.call(class_name, title)
return hWnd
end
HWND_TOP = 0
HWND_TOPMOST = -1
SWP_NOMOVE = 2
def Win32API.SetWindowPos(hWnd, w, h)
swp = Win32API.new('user32', 'SetWindowPos', %(l, l, i, i, i, i, i), 'i')
ok = swp.call(hWnd, HWND_TOP, 0, 0, w, h, SWP_NOMOVE)
# 下の行を有効にすると、常に前面に表示されるウィンドウになる。
#ok = swp.call(hWnd, HWND_TOPMOST, 0, 0, w, h, SWP_NOMOVE)
return ok
end
end
title = Win32API.GetPrivateProfileString("Game", "Title")
hWnd = Win32API.FindWindow("RGSS Player", title)
# 幅320、高さ480に変更
ok = Win32API.SetWindowPos(hWnd, 320, 256)
if(ok == 0)
p "サイズ変更失敗"
end
#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================
#………………………………………………………………………………………………………………………………………………………………………………………………………………………………#
首先我插入了这段脚本,发现问题多多#¥% 总结为:1、 脚本只是截取,并非使视窗变小!!
2、 脚本中隐藏事件冒了一下(隐藏事件有行走图,执行内容加了一段脚本和暂时消除事件)
3、 开始游戏时有一个窗口转化过程,很碍眼
4、 窗口过度拉长后多余视口黑屏(和viewport口有关吧?)
5、 窗口过度拉长后开机游戏窗口有一部分在电脑屏幕外
#………………………………………………………………………………………………………………………………………………………………………………………………………………………………#
不甘心的偶又尝试了这个脚本“分辨率1280*800”:
#==============================================================================
# ■ Graphics
#------------------------------------------------------------------------------
# 图像模块
#==============================================================================
#--------------------------------------------------------------------------
# ● 更待指定帧数
#--------------------------------------------------------------------------
def Graphics.wait(n)
n.times{self.update;yield if defined? yield}
end
#--------------------------------------------------------------------------
# ● 获取窗口宽
#--------------------------------------------------------------------------
def Graphics.width
@width ||= 640
end
#--------------------------------------------------------------------------
# ● 获取窗口高
#--------------------------------------------------------------------------
def Graphics.height
@height ||= 480
end
#--------------------------------------------------------------------------
# ● 更改窗口大小
#--------------------------------------------------------------------------
def Graphics.resize_screen(width, height)
@width ||= 640
@height ||= 480
游戏ini名=".\\Game.ini"
val = "\0"*256
gps = Win32API.new('kernel32', 'GetPrivateProfileString','pppplp', 'l')
gps.call("Game", "Title", "", val, 256, 游戏ini名)
val.delete!("\0")
title = val
fw = Win32API.new('user32', 'FindWindow', 'pp', 'i')
hWnd = fw.call("RGSS Player", title)
swp = Win32API.new('user32', 'SetWindowPos', 'lliiiii', 'i')
pointwds = [0,0,0,0].pack('llll')
pointcet = [0, 0].pack('ll')
wdsrect = Win32API.new('user32.dll', 'GetWindowRect', 'lp', 'l')
client_screen = Win32API.new("user32", "ClientToScreen", 'ip', 'i')
wdsrect.call(hWnd,pointwds)
client_screen.call(hWnd, pointcet)
wds = pointwds.unpack('llll')
cet = pointcet.unpack('ll')
addw = wds[2] - wds[0] - @width
addh = wds[3] - wds[1] - @height
x = wds[0] - (width - @width) / 2
y = wds[1] - (height - @height) / 2
@width = width
@height = height
swp.call(hWnd, 0, x, y, @width + addw, @height + addh, 0x20)
end
Graphics.resize_screen(1280, 800)
#………………………………………………………………………………………………………………………………………………………………………………………………………………………………#
@开机显示1280*800的全屏游戏视窗,不带蓝条,但3/4黑屏(应该和视口有关?)
按alt+enter后,显示全屏,无黑屏,再按alt+enter后,缩小为小视窗,依然不带蓝条,或者说蓝条在电脑窗口以外。
重要的一点:虽然测试游戏时还是要从原始视窗调整为新视窗,但视窗位置始终居中(美观啊~)
#………………………………………………………………………………………………………………………………………………………………………………………………………………………………#
现在楼主正在看紫苏大写的句柄脚本啥的,既”启动时获取句柄 | 修改分辨率 | 窗口外观 | 加载字体“的帖子,表示脑力耗尽,求高手相助啊~~{:2_253:}
|
|