擅长:python、mysql、java
<p>你的代码有很多问题。在</p>
<p>Blitting不应该在主循环之前完成。在</p>
<p>如果隐藏的对象改变它的位置会更好。通过在构造函数中添加一个位置来更改它,并在draw方法中使用它。在</p>
<pre><code>def __init__(self,pos):
...
self.pos = pos
def draw(self):
window.blit(self.i1, self.pos)
</code></pre>
<p>你的画法永远不会结束。您需要用if语句替换while语句。当spritestay为False时,也不会绘制第二个图像。我猜你是想闪电清除.png. 在</p>
^{pr2}$
<p>如果清除.png只是一个空的图像,根本没有任何意义。所以这就变成了:</p>
^{3}$
<p>您不从draw函数返回任何内容,因此</p>
<pre><code>d = yotestvar.draw(100,100)
</code></pre>
<p>d是无。你在任何地方都不用d,所以你可以删除它。在</p>
<p>在每一帧上创建HiddenObject。我认为在循环之前移动它会更好。在</p>
<p>最后一个问题是你没有用任何颜色填充屏幕。这可能是你一直在纠结的真正问题。下面是blitting的工作原理。在</p>
<p>你是个画家,你面前是一幅画布。如果你拿着你的画笔画东西,你怎么能摆脱它?唯一的办法就是在上面画些东西。
在pygame中,我们使用fill方法来填充一个具有特定颜色的整个曲面。在</p>
<pre><code>screen.fill((0,0,0)) # fills screen with black color
</code></pre>
<p>因此,为了在屏幕上显示某些内容,您需要调用<code>screen.fill</code>,然后绘制任何其他您希望看到的对象。在</p>