我试图让来自ASCIImatics的动画只运行一次,然后进入我的正常代码。就像你可以说的引子。有没有办法只运行一次动画,一旦你按下空格键,它就会中断动画,转到正常的代码体?目前动画在你按下空格键后循环运行,正如我所说的,我正试图让它只运行一次。谢谢!
from random import randint
from asciimatics.effects import Print
from asciimatics.particles import Explosion, StarFirework, DropScreen, Rain, \
ShootScreen
from asciimatics.renderers import SpeechBubble, FigletText, Rainbow
from asciimatics.scene import Scene
from asciimatics.screen import Screen
from asciimatics.exceptions import ResizeScreenError
import sys
from asciimatics.effects import Cycle, Stars
import time
def demo(screen):
screen.set_title("ASCIIMATICS demo")
scenes = []
# First scene: title page
effects = [
Stars
(screen, 200),
Cycle(screen,
Rainbow(screen, FigletText("Welcome to", font="big")),
y=screen.height // 4 - 5),
Print(screen,
Rainbow(screen, FigletText("K y l e ' s M i n i G a m e s !", font="big")),
screen.height // 2 - 3,
start_frame=7),
Cycle(screen,
SpeechBubble("Press space bar to play"),
screen.height - 3,
#transparent=False,
start_frame=10)
]
scenes.append(Scene(effects, 0, clear=True))
# Next scene: just dissolve the title.
effects = [
ShootScreen(screen, screen.width // 2, screen.height // 2, 100),
]
scenes.append(Scene(effects, 10, clear=False))
screen.play(scenes, stop_on_resize=True)
if __name__ == "__main__":
while True:
try:
Screen.wrapper(demo)
except ResizeScreenError:
pass发布于 2021-07-24 05:04:01
这取决于你想实现什么.
如果只想播放一次所有场景,只需在调用play()时指定repeat=False即可。当您按空格键时,这将从第一个Scene开始移动,并在第二个Scene上显示10帧后自动停止(由您的代码指定)。
但是,如果您希望确保在第二个Scene中清除屏幕时空格键不起作用,则需要创建一个自定义Scene来捕获并忽略空格键。ray_casting.py演示中的GameController类展示了如何做到这一点。
https://stackoverflow.com/questions/68455609
复制相似问题