Project1

标题: VX 用新 WINDOW 类(兼容 XP 与 VX 的皮肤)更新到 v2.1 [打印本页]

作者: 洛克人SZ    时间: 2009-4-8 02:37
标题: VX 用新 WINDOW 类(兼容 XP 与 VX 的皮肤)更新到 v2.1
当前版本:v2.1   (2009.04.12)

      新 WINDOW 类的使用说明:

   1、特点:

      同时支持 XP 与 VX 的皮肤图片,且按照图片宽度自动判断使用的是那种图片,无需
      用户手动设置。与 VX 内部的 WINDOW 类相比,在保留全部原有功能的基础上,具有
      了更强的扩展性(已追加了部分新功能),整合了两种动态光标和一个静态光标,
      边框和背景支持独立的动画效果(VX 的背景动画可以为两层背景单独指定不同的
      动画方式)。
      注:stretch 功能仅在使用 XP 的皮肤时有效。

   2、新功能(v2.0):

      set_openness_mode(mode)       设置 openness 模式,在设置 openness 的值之前使用
                                    mode:0  上下集中   原有模式
                                    mode:1  左右集中
                                    mode:2  从上到下
                                    mode:3  从下到上
                                    mode:4  从左到右
                                    mode:5  从右到左
      set_cursor_rect(on_off)       设置是否启用光标矩形
                                    true  为启用
                                    false 为禁用(会释放光标矩形的精灵)
      set_cursor_a(on_off)          设置是否启用动态光标 1
                                    true  为启用
                                    false 为禁用(会释放动态光标 1 的精灵)
      set_cursor_a_s(on_off)        设置是否启用静态光标
                                    true  为启用
                                    false 为禁用(会释放静态光标的精灵)
      set_cursor_b(on_off)          设置是否启用动态光标 2
                                    true  为启用
                                    false 为禁用(会释放动态光标 2 的精灵)
      arrow_cr_can=(arrow_cr_can)   设置是否显示滚动箭头
                                    true  为显示
                                    false 为不显示(即使内容大于窗口也不显示)
      set_animation_bg(mode = 0, sprite = 0, dir = "", filename = "")
          设置背景动画
          mode:模式   0 无动画效果,1 四帧动画,2 卷动
          sprite:应用动画效果的背景层   0 底层背景,1 表层背景,2 底层+表层
                  在 XP 模式下只能是 0
          dir:卷动方式下的方向   取以下字符串中的一个:
               "上","左上","左","左下","下","右下","右","右上",
          filename:文件名  附加动画图片的文件名
      set_animation_bk(filename = "")  设置边框动画
          filename:文件名  附加动画图片的文件名

     v2.1 更新
     
      修正了一个 BUG
      根据 zh99998 的建议修改和增加了 openness 的模式(方向与小键盘方向对应):
      set_openness_mode(mode)       设置 openness 模式,在设置 openness 的值之前使用
                                    mode:nil  上下集中   原有模式
                                    mode:0  左右集中
                                    mode:1  左下到右上
                                    mode:2  从下到上
                                    mode:3  右下到左上
                                    mode:4  从左到右
                                    mode:5  中心向四周
                                    mode:6  从右到左
                                    mode:7  左上到右下
                                    mode:8  从上到下
                                    mode:9  右上到左下
      根据 zh99998 的建议修改和增加了一个窗口连接功能(无法与动态边框功能同时使用):
      使用方法见范例 v2.1
      set_bk_size(bksize, sizeoff)   设置边框尺寸(窗口连接用)
                                     bksize:边框尺寸
                                     sizeoff:边框偏移量
      set_bk_linkline(mode, dir, wz, jg)  设置连接模式
                                     mode:是否使用边框连接,取值 0 和 1
                                     dir:边框连接的方向,取值 "水平" 和 "垂直"
                                     wz:边框连接的显示位置,数字
                                     jg:边框之间的间隔,数字
      clear_bk_rect(dir, wz, jl, kd)   清除指定范围的边框
                                     dir:要清除的方向,取值 "上"、"下"、"左"、"右"
                                     wz:要清除范围的开始位置,数字
                                     jl:要清除的范围,数字
                                     kd:要清除的宽度,数字,应与边框尺寸相同
   3、缺点:
   
      建立窗口的速度略慢于原 WINDOW 类(使用背景和边框的动画时更加明显),不过
      在可以接受的范围内(至少在我的机子上是这样),内存的消耗增加了一些,不多。

新 WINDOW 类 v2.0
新 WINDOW 类 v2.1

请大家帮忙测试 BUG 和功能方面的不足,有什么意见和建议请回帖,谢谢。
作者: icyminileaf    时间: 2009-4-8 04:41
因为一般同事只使用一个皮肤
所以可以考虑设置个开关,来切换使用VX或者XP的皮肤
这样可以省去识别过程造成的资源浪费,
免去每次识别的烦恼,减少延迟
作者: icyminileaf    时间: 2009-4-8 04:41
因为一般同事只使用一个皮肤
所以可以考虑设置个开关,来切换使用VX或者XP的皮肤
这样可以省去识别过程造成的资源浪费,
免去每次识别的烦恼,减少延迟
作者: 沉影不器    时间: 2009-4-9 03:09
提示: 作者被禁止或删除 内容自动屏蔽
作者: 洛克人SZ    时间: 2009-4-10 19:56
以下引用icyminileaf于2009-4-7 20:41:48的发言:

因为一般同事只使用一个皮肤
所以可以考虑设置个开关,来切换使用VX或者XP的皮肤
这样可以省去识别过程造成的资源浪费,
免去每次识别的烦恼,减少延迟


识别的时候其实只有两个简单的判断语句,基本不会有延迟…………

以下引用沉影不器于2009-4-8 19:09:48的发言:

没发现bug,在viewport处理上尤其完美,以下测试报告:

标题画面基本保持在54-60之间,多数在58-60;
进入菜单就比较低了,42-50大概,最低36;
菜单进入和切换时有点停顿
测试环境: p4 2.0 1G内存 镭9600显卡


菜单进入和切换时有点停顿是没办法的事情,毕竟比原 WINDOW 类多处理了不少东西。
至于帧数方面,在我的机子上基本都在 60 帧左右……暂时无法优化(因为看不到效果……)。
环境:E7200 2.53G 2G 内存 9800GT
作者: zh99998    时间: 2009-4-10 20:31
http://rpg.blue/viewthread.php?tid=121194
LZ可否帮我看看这个窗口问题

或者把这个功能加进新Window里

然后,楼顶的范例,按ESC键打开菜单的时候会有1秒左右的延时,关闭菜单也是1s
作者: 洛克人SZ    时间: 2009-4-10 20:49
以下引用zh99998于2009-4-10 12:31:13的发言:

http://rpg.blue/viewthread.php?tid=121194
LZ可否帮我看看这个窗口问题

或者把这个功能加进新Window里

这个效果也不是做不出来……只是比较麻烦……
这两天正在研究写 DLL 调用 DX,没时间,过两天再说吧……抱歉了。
另外,窗口中间的边框位置是怎么确定的,用户指定?窗口正中间?还是特定位置?
作者: zh99998    时间: 2009-4-10 20:58
那个,不是【窗口中间】加边框,是把【两个】窗口之间的边框进行改变

坐标和宽度用户指定
作者: zh99998    时间: 2009-4-10 21:32
openness模式,建议改成跟小键盘方向对应的,5是从中心向四周
1是左下到右上,2是从下到上……………………

0表示从中间向左右,不对它进行赋值是用中间到上下(也就是nil,默认状态)
作者: 洛克人SZ    时间: 2009-4-11 18:48
以下引用zh99998于2009-4-10 12:58:45的发言:

那个,不是【窗口中间】加边框,是把【两个】窗口之间的边框进行改变

坐标和宽度用户指定

原来是“把【两个】窗口之间的边框进行改变”啊,我知道了。

那么这里的距离呢?

以下引用zh99998于2009-4-10 13:32:53的发言:

openness模式,建议改成跟小键盘方向对应的,5是从中心向四周
1是左下到右上,2是从下到上……………………

0表示从中间向左右,不对它进行赋值是用中间到上下(也就是nil,默认状态)

很好的建议啊,不过我好像忘了写从中心向四周的过程了………………尽快加入吧……
作者: zh99998    时间: 2009-4-11 21:36
以下引用洛克人SZ于2009-4-11 10:48:50的发言:


以下引用zh99998于2009-4-10 12:58:45的发言:

那个,不是【窗口中间】加边框,是把【两个】窗口之间的边框进行改变

坐标和宽度用户指定

This is 【距离】
作者: 偶尔杀人越货    时间: 2009-4-12 05:29
这个我喜欢.{/qiang}
作者: zh99998    时间: 2009-4-13 00:08
发现范例里几乎创建和释放每个window都会卡
作者: 洛克人SZ    时间: 2009-4-13 01:59
以下引用zh99998于2009-4-12 16:08:34的发言:

发现范例里几乎创建和释放每个window都会卡

启用动态效果的语句我写在 Window_Base 中的 initialize 过程中,当然创建每个window都会卡。
另外,这个是不是你说的效果:

作者: zh99998    时间: 2009-4-13 02:09
Yes

然后,前面提到个openness的问题
指定一个x,y坐标作为中心,指定x_openness和y_openness作为横向和纵向展开度
那么就是全能的了

不过可能会更加耗费系统资源- -|||
不知道哪个好些
作者: 洛克人SZ    时间: 2009-4-13 02:37
更新到 v2.1 了(主楼),openness 已经调整为你说的第一种方式了。
第二种方式……再说吧……
作者: zh99998    时间: 2009-4-13 04:03
非常感谢




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