赞 | 2 |
VIP | 143 |
好人卡 | 1 |
积分 | 1 |
经验 | 216792 |
最后登录 | 2019-10-10 |
在线时间 | 24 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 61
- 在线时间
- 24 小时
- 注册时间
- 2008-8-5
- 帖子
- 1924
|
本帖最后由 紫苏 于 2010-8-14 12:48 编辑
回复 沉影不器 的帖子
但作者给 press? 写的注释里确实说的是 down? 的功能 ><
# Mouse.press?
# This returns a true/false value when you test whether a button is pressed
# and kept depressed. The values you pass are 1 (for the left mouse button),
# 2 (for the right mouse button), or 3 (for the middle). 我觉着吧就是她/他没仔细看说明文档或者一时疏忽了,如果想做切换的功能可能把方法命名为 toggled? 更合适
zh 判断的 > 1,原意应该是想只判断 down?,不判断 toggled?,按常理来想这么做也确实可行,因为 GetKeyState 返回的是 16 位整数,而 Ruby 是 31 位整数,无论 GetKeyState 的返回值怎么变,直接拷贝数据到 31 位整数里的话,应该都不会影响 31 位整数的符号位,所以一旦 16 位整数的最高位被设为了 1,整个整数必然 > 1;但实际测试了下,GetKeyState 返回的数有时是负的,有时不是,是负的时候刚好是 16 位整数最高位为 1 时所表示的那个负数,说明这里有符号扩展,影响了 31 位整数的符号位,也应该是柳柳那个问题的来源。最不会有问题的办法自然还是与上 0x8000 再判断 != 0 了
在 Ruby 里 GetMessage 确实不好,因为 Graphics.update 也在同时处理消息,游戏一帧之间 Ruby 脚本可能只调用一次 GetMessage(一帧之间多次调用 GetMessage 的话,不知道什么时候该停止),而 Graphics.update 却不止,两帧之间的程序空闲时间足够调用成百上千次 GetMessage 了,当队列比较长时,可能大部分消息会被 Graphics.update 抢走 |
|