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

Project1

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

[讨论] [小远童鞋靴脚本_第一波]鼠标控制窗口移动/关闭

[复制链接]

Lv1.梦旅人

梦石
0
星屑
75
在线时间
40 小时
注册时间
2012-7-3
帖子
98
跳转到指定楼层
1
发表于 2013-9-16 23:38:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 a774741359 于 2013-9-18 16:18 编辑

{:2_287:}[小远童鞋靴脚本_第一波]鼠标控制窗口移动/关闭

这块开始的想法是使用窗口自身的z坐标来实现窗口的区分,不过后来发现根本一点可行性都没有,因为他们的Z坐标默认基本都是相同的(窗口的默认Z坐标是多少勒?)答对有姜
后来无奈只能自己添加一个Z坐标,这个Z坐标必须是唯一的。
一开始打算在Window_Base里处理窗口的叠加与移动,但是后来发现不可行,于是移动到了Scene_Base里处理。

A.注册句柄
核心就是一个存放着window句柄的数组wnd_list了。(什么是window句柄=>我也不知道该管创建窗口返回值叫什么)
这个数组的[0]=>首位是在屏幕上最高的一个窗口,我称为置顶窗口
这个窗口必定是激活的(active)
如果窗口类里标明了可移动(can_move)可关闭(can_close),这个窗口就可以被移动和关闭。
方法:def regiter_handle(wnd)
           注册句柄(窗口句柄)
解释:在窗口创建的同时调用该方法注册句柄,如果没有注册则不参与窗口移动。
           这个方法向数组wnd_list尾压入一个成员。wnd不能为空。(因此,越晚被注册的窗口Z坐标越低,写文章的时候才觉得好怪。)

B.窗口置顶
第二就是判断鼠标选择置顶窗口
从数组wnd_list首位开始判断=>即Z坐标从最高开始递减
循环判断数组中的成员的矩形是否被鼠标按下(click),如果是的话,该成员移到首位。
首位活跃=真
次位活跃=假 =>如果允许后台运行 则跳过
方法:def handle_to_top(wnd)
         窗口置顶(窗口句柄)
解释:这个方法把一个窗口句柄移动到首位,原位置以前的项目依次后退。

C.窗口移动和关闭
第三就是判断鼠标是否被拖动和是否被关闭
进入移动状态判定条件:鼠标在窗体范围内 and 鼠标左键状态为Down
                                      如果满足上面的条件,窗体就进入了Moving状态,记录抓取点=>此时的鼠标的坐标
离开移动状态判定条件:鼠标离开了窗体范围 or 鼠标左键状态为Up
                                      如果满足上面的条件,窗体就离开了Moving状态,抛弃记录点=>记录点清空
关闭判定条件:鼠标在关闭范围内 and 鼠标click
                        如果满足了上面的条件,窗体调用Base的close关闭
Moving状态:窗体的坐标=鼠标现行的坐标-抓取点坐标

D.注销句柄
注销句柄:从数组中剔除某个成员,这个成员将不再参与移动和关闭操作。

E.场景退出
注销所有句柄:清空数组

根据上面的方法,现在已经实现了基本的鼠标移动窗口和鼠标关闭窗口。
根据测试可以达成窗口叠加,置顶窗口的绘画Z坐标比其他所有窗口高
根据测试可以达成窗口关闭,在窗口指定了可关闭的时候。
根据测试可以达成窗口移动,在窗口指定了可移动的时候。
这就是小远童鞋靴脚本的第一波,本文中如果有错误或者您有更好的方法跟帖回复,由于脚本还处于概念阶段,并不稳定,就不上传了,请大家见谅。
小远童鞋希望大家在回复中发表一下自己对Rm的鼠控窗口(即本文中所述)的看法无论贬褒,请您留下足迹。

Lv1.梦旅人

梦石
0
星屑
112
在线时间
551 小时
注册时间
2012-8-18
帖子
1429
2
发表于 2013-9-17 12:17:31 | 只看该作者
看起来很科学的样子0 0
不过这个功能很可能被一些xiao玩pen家you玩坏的……
我要填坑!我要背单词!我要学日语!我要每天锻炼!
好吧呵呵= =
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-28 07:19

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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