Brython移动图片时背景跟随问题的修复咨询
Brython移动图片时背景跟随问题的修复咨询
嘿,我完全懂你现在的困扰——移动小马的时候它居然拖着一块从原位置“抠”下来的背景框一起走,这效果肯定和你预想的不一样!咱们来快速搞定这个问题。
问题出在哪?
你现在的代码里,每次移动小马都先执行remove(pony)再add(pony),但在CodeHS的Brython运行环境里,这种操作会导致小马原来的位置没有被底层的城堡背景及时重绘,看起来就像是小马带着一块背景框在移动。而且其实完全没必要每次移除再重新添加图片,这才是问题的核心所在。
修复后的完整代码
你只需要修改move_pony函数,删掉多余的移除和添加步骤就可以了,完整代码如下:
set_size(500,400) castle = Image("https://codehs.com/uploads/7870869b7f83173c85a485528fe3f558") castle.set_size(get_width(),get_height()) castle.set_position(0,0) add(castle) pony = Image("https://codehs.com/uploads/531804f0be469050b7b3960871112b83") pony.set_size(100,100) pony.set_position(get_width()-150 ,275) add(pony) def move_pony(event): # 删掉多余的remove和add,直接移动即可 if event.key == "ArrowRight": pony.move(5, 0) if event.key == "ArrowLeft": pony.move(-5, 0) add_key_down_handler(move_pony)
为什么这样改就有效?
- 小马已经被添加到画布上了,直接调用
pony.move()方法就会自动更新它的位置,CodeHS的系统会自动用底层的城堡背景覆盖小马原来的位置,不会留下奇怪的背景框。 - 去掉
remove(pony)和add(pony)这两步,就避免了重复操作元素导致的画布刷新异常,小马就能干净利落地左右移动啦。
你直接替换代码试试,保证这次只有小马自己乖乖跑,再也不会拖着背景框啦!
备注:内容来源于stack exchange,提问作者user3321023
相关产品推荐
相关产品推荐

