<p><code>4</code>不是事件类型。事件类型是<code>MOUSEMOTION</code>(参见<a href="https://www.pygame.org/docs/ref/event.html" rel="nofollow noreferrer">^{<cd3>}</a>)</p>
<p>创建<a href="https://www.pygame.org/docs/ref/rect.html" rel="nofollow noreferrer">^{<cd4>}</a>对象:</p>
<pre class="lang-py prettyprint-override"><code>newrect = pygame.Rect(playerstartposX, playerstartposY, playerwidth, playerheight)
</code></pre>
<p>事件发生时改变其位置:</p>
<pre class="lang-py prettyprint-override"><code>if event.type == pygame.MOUSEMOTION:
newrect.center = event.pos
</code></pre>
<p>在主应用程序循环中,您必须不断地</p>
<ul>
<li>处理事件</li>
<li>清除显示</li>
<li>分别绘制场景矩形</li>
<li>更新显示</li>
</ul>
<p>如果要控制每秒帧数,则可以将参数传递给<a href="https://www.pygame.org/docs/ref/time.html#pygame.time.Clock" rel="nofollow noreferrer">^{<cd6>}</a>的方法<a href="https://www.pygame.org/docs/ref/time.html#pygame.time.Clock.tick" rel="nofollow noreferrer">^{<cd5>}</a>,而不是<code>pygame.time.delay</code>:</p>
<pre class="lang-py prettyprint-override"><code>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()
</code></pre>