新开一主题 因为改了很多 解决了很多上一版本的问题
这次写了好多天 写到今天终于感觉 几乎是差不多了吧
果然代码还是要慢慢慢慢写 涂涂改改涂涂改改才好发布的
那么 现在由我来介绍 这次版本的优点
1.窗口独立 大小随意 这次是真独立
独立的鼠标键盘消息获取 独立的窗口焦点 独立的关闭
和主窗口没有关联了 你可能会担心窗口失去焦点带来的不刷新的问题
所以第二点
2.支持后台运行 你可以指定后台运行与否
即使失去焦点也会继续刷新
你也可以直接不要显示窗口 当作多线程来用..
3.支持消息传递
虽然只支持四个整数的传递 不过可以传指针 实际上是没什么问题的
4.内存释放优化
这个想了很久 不过大多失败了
不过后来发现简单的做法似乎是最有效的
5.使用方便 很方便了
只要给它运行的代码 告诉他窗口多大放哪里显不显示等等
用完了判断一下是否结束就可以了
具体使用说明请见脚本
RMXP多窗体 v2.0
然后是一些实现上的细节
模仿了exe加载rgss的方式加载了新的rgss 开始问题很多 不过慢慢都解决了
在RGSSGameMain那里我直接pass掉了控制线程的建立(原来用来检查10s和关闭进程用)
注入了rgss原来的窗口消息处理机制 所以收到 0x10 的VM_CLOSE可以自己控制怎么关掉
后台运行由改掉一个跳转实现 rgss收到 0x1C WM_ACTIVATEAPP 会把一个变量改成1 判断为1则刷新否则继续循环
窗口的建立综合了createwindowex和rgss 在前者确定x和y 后面确定宽高
在加载RSS103J的时候dllmain会建立一个heap freelibrary的时候它又会释放掉 所以只需要free就能解决很大程度上的内存泄漏
位图和精灵则通过dispose 音频暂时没有处理 余下的大约是增加了3M 其中1M是实例带来的 所以实际上只有2M没释放 可以说是很少了
我猜是gdi对象 大概字体啥的 没释放吧
等等等等暂时没想那么多了就这样吧
欢迎提出建议 不过不一定会解决就是了
然后是一个范例:
能很好的帮助理解脚本的使用
范例配图
本帖来自P1论坛作者SixRC,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:
https://rpg.blue/forum.php?mod=viewthread&tid=403704 若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。