从简到难逐步完成各种实现方式
创建对象
首先创建一个rutine,然后新建几个对象
- code
- polygon
- mouse
- key_resp
鼠标控制
在code 模块的 Each frame部分加入:
1 2 3 4 5 6
| if mouse.isPressedIn(polygon): polygon.pos = mouse.getPos()
polygon.draw()
|
键盘控制
在code 模块的 Each frame部分加入:
1 2 3 4 5 6
| if key_resp.getKeys(keyList=["up"]): polygon.pos = polygon.pos + (0, 0.1)
polygon.draw()
|
同理可以加入其它按键以及模块
然后开始进阶模式
加入虚拟网格
为了控制对象的位置,将屏幕划分为看不见的网格,然后将移动对象对齐到网格
非常简单,只需要控制位置坐标的精度,即四舍五入
1 2
| polygon.pos = np.around(polygon.pos, decimals=1)
|
鼠标、键盘同时控制
稍微改动结合即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| if mouse.isPressedIn(rect): picked_rect = rect picked_rect.pos = mouse.getPos() elif mouse.isPressedIn(tri): picked_rect = tri picked_rect.pos = mouse.getPos() else: picked_rect.pos= np.around(picked_rect.pos, decimals=1)
if key_control.getKeys(keyList=["up"]): picked_rect.pos = picked_rect.pos + (0, 0.1) elif key_control.getKeys(keyList=["down"]): picked_rect.pos = picked_rect.pos - (0, 0.1) elif key_control.getKeys(keyList=["left"]): picked_rect.pos = picked_rect.pos- (0.1, 0) elif key_control.getKeys(keyList=["right"]): picked_rect.pos = picked_rect.pos+ (0.1, 0)
picked_rect.draw()
|
献上psychopy builder实验文件
moveObjByMouseOrKeys_ns.psyexp
moveObjByMouseOrKeys_ns.py