我最近开始研究tkinter
,并决定拿起这个断块游戏并研究/修改它。在
所以问题出现在以下几行:
blocks = []
block.xLoc = 50
block.yLoc = 50
block.xsize = 40
block.ysize = 30
for x in range(4):
for y in range(20):
blockC = PhotoImage(file = "block.png")
blockID = canvas.create_image(block.xLoc,block.yLoc,image=blockC)
canvas.grid()
blocks.append(blockID)
block.xLoc += 40
block.yLoc += 30
block.xLoc = 50
我想有多个图像块,但它只给我一个块 &;其他块不可见,但仍起作用(球反弹)。在
我怎么解决这个问题?在
这是用于比较的原始代码: (这一个是完美的工作,但它使用的是一个矩形画布。)
^{pr2}$
正如@Bryan Oakley指出的,您需要将对在循环中创建的
PhotoImage
对象的引用保留在某处,这样当您在最内层循环中使用的临时blockC
变量中放入一个新值时,它们就不会被垃圾收集。在很难从问题中的代码片段中确定答案,但下面这样的方法应该可以解决问题。因为所有块的图像都是相同的,所以没有理由在内部循环中加载80个副本。只需在进入循环之前加载一次,然后反复使用它。在
相关问题 更多 >
编程相关推荐