python - 更新矩形的位置
问题描述
我正在尝试熟悉 pygame,所以我从一个简单的程序开始,它绘制一个矩形并用鼠标移动它。矩形画得很好,但是它不会随着鼠标位置移动,我想不出为什么。
我发现另一个有这个问题,但是这个修复对我没有用,而且比我认为需要的要冗长得多。
pygame.init()
screen = pygame.display.set_mode((500,300))
# --- mainloop / event loop ---
running = True
playerstartposX = 100
playerstartposY = 100
playerwidth = 50
playerheight = 50
screen.fill((30,30,30))
newrect = pygame.draw.rect(screen, (255,0,0) , ( playerstartposX ,
playerstartposY ,
playerwidth ,
playerheight))
pygame.display.update()
while running:
pygame.time.delay(100)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == 4: #if event is mouse motion
newrect.move(event.pos) #move the rectangle to mouse pos
pygame.display.update()
pygame.quit()
解决方案
4
不是事件类型。事件类型是MOUSEMOTION
(请参阅pygame.event
)。
创建一个pygame.Rect
对象:
newrect = pygame.Rect(playerstartposX, playerstartposY, playerwidth, playerheight)
当事件发生时改变它的位置:
if event.type == pygame.MOUSEMOTION:
newrect.center = event.pos
在主应用程序循环中,您必须不断
- 处理事件
- 清除显示
- 分别绘制场景矩形
- 更新显示
如果要控制每秒帧数,则可以将参数传递给方法.tick()
而pygame.time.Clock
不是pygame.time.delay
:
import pygame
pygame.init()
screen = pygame.display.set_mode((500,300))
clock = pygame.time.Clock()
running = True
playerstartposX = 100
playerstartposY = 100
playerwidth = 50
playerheight = 50
newrect = pygame.Rect(playerstartposX, playerstartposY, playerwidth, playerheight)
while running:
clock.tick(60)
# handle the events
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.MOUSEMOTION:
newrect.center = event.pos
# clear the display
screen.fill((30,30,30))
# draw the rectangle
pygame.draw.rect(screen, (255,0,0), newrect)
# update the display
pygame.display.update()
pygame.quit()
推荐阅读
- python - 使用来自 2 个数据框的列制作箱线图 [python seaborn]
- c - 检查字符串是否包含特定数量的给定值
- python - 如何聚合熊猫数据框中的行
- android - 读取 Android 手机的实际 txPower
- parse-platform - 如果不存在,则解析模式添加字段
- numpy - 在 Keras 指标之间共享操作结果
- excel - 将工作表复制并粘贴到另一个工作簿,然后返回到您复制的工作簿
- python - 在 Mac 上使用 IDLE 安装 glob2
- swiftui - SwiftUI 在视图之间切换
- python - Python3 以编程方式将字符串转换为原始字符串