def enter_scene(self, previous_scene): left1 = KeyFrame(position=self.actor1.position) left2 = KeyFrame(position=self.actor2.position) right1 = KeyFrame(position=(430, 70)) right2 = KeyFrame(position=(430, 430)) sequence1 = Sequence() sequence2 = Sequence() sequence1.add_keyframes((0, left1), (.5, right1), (1, left1)) sequence2.add_keyframes((0, left2), (.5, right2), (1, left2)) chain = Chain(loop=True) chain.add_sequences((self.actor1, sequence1), (self.actor2, sequence2)) self.animations.fire(None, chain)
def add_anim_to_light(self, light): light.animate = AnimationManagerProxy(light) elapsed = 0.0 seq = Sequence(loop=True) for _ in range(10): key = KeyFrame(position=(random.randint(0, self.screen_width), random.randint(0, self.screen_height))) seq.add_keyframe(elapsed, key) elapsed += random.uniform(15.0, 30.0) light.animate(seq)
def takedmg(sprite): c = arcade.color sprite.color = c.RED seq = Sequence() seq[0].frame = KeyFrame.from_sprite(sprite, ['center_x']) seq[.1].frame = KeyFrame(center_x=sprite.center_x + 30) seq[.2].frame = KeyFrame(center_x=sprite.center_x - 10) seq[.3].frame = seq[0].frame seq[.1].callback = delay_set_attribute(sprite, 'color', sprite.skin_color) return sprite, seq
def powerup(sprite): flash = SquareSprite() flash.color = arcade.color.GOLD flash.position = sprite.position target = (sprite.center_x, sprite.center_y + 100) seq = Sequence() seq[0].frame = KeyFrame.from_sprite(sprite, ['position', 'scale', 'alpha']) seq[1].frame = KeyFrame(position=target, scale=1.5, alpha=0) seq[1].callback = flash.kill arcade.get_window().curtains.current_scene.flash_sprites.append(flash) return flash, seq
def sequences(self): if not self._sequences: for sprite in self.sprites: seq = Sequence() seq[0].frame = KeyFrame.from_sprite( sprite, ['width', 'height', 'position']) seq[0].frame.alpha = 255 seq[.2].frame = KeyFrame(width=0, height=0, position=self.anchor.position, alpha=0) self._sequences[sprite] = seq return self._sequences
def sequence_gen(random: Optional[bool] = False) -> Sequence: """Generate a Sequence for the ducky to follow.""" seq = Sequence() current = 0 for ((x1, y1), (x2, y2)) in zip(POINTS_HINT[:-1], POINTS_HINT[1:]): p1 = x1 * constants.SCREEN_WIDTH, y1 * constants.SCREEN_HEIGHT p2 = x2 * constants.SCREEN_WIDTH, y2 * constants.SCREEN_HEIGHT frames = 1 if random: frames = randint(1, 5) seq.add_keyframes((current, KeyFrame(position=p1)), (current + frames, KeyFrame(position=p2))) current += frames return seq
def start_anim(self, parent_scene): for arc in self.arcs: arc.start_anim() alive_duration = random.uniform(10.0, 90.0) seq = Sequence() fade_duration = 6.0 seq.add_keyframe(0.0, KeyFrame(alpha=0)) seq.add_keyframe(fade_duration, KeyFrame(alpha=MAX_ALPHA)) seq.add_keyframe(fade_duration + alive_duration, KeyFrame(alpha=MAX_ALPHA)) seq.add_keyframe(fade_duration + alive_duration + fade_duration, KeyFrame(alpha=0), callback=self.coil_done) self.animate(seq)
def attack(sprite): x = sprite.center_x opx = sprite.opponent.center_x seq = Sequence() seq[0].frame = KeyFrame.from_sprite(sprite, ['center_x', 'height']) seq[.2].frame = KeyFrame(center_x=x - 20, height=sprite.height) seq[.3].frame = KeyFrame(center_x=opx, height=sprite.height - 30) seq[.31].frame = KeyFrame(center_x=opx, height=sprite.height) seq[.8].frame = seq[0].frame seq[.3].callback = sprite.opponent.take_damage seq[.31].callback = delay_set_attribute(sprite, 'special', sprite.special + 20) seq[.8].callback = delay_set_attribute(sprite, 'stamina', 0) return sprite, seq
def start_anim(self): if random.random() > 0.85: return delay1 = random.uniform(0.5, 30.0) anim1 = random.uniform(10.0, 20.0) delay2 = random.uniform(0.5, 30.0) anim2 = random.uniform(10.0, 20.0) k1 = KeyFrame(angle=0) k2 = KeyFrame(angle=random.choice((-90, -180, -270, -360, 90, 180, 270, 360))) seq = Sequence(loop=True) # animate to given rotation and then bounce back seq.add_keyframe(0, k1) seq.add_keyframe(delay1, k1) seq.add_keyframe(delay1 + anim1, k2) seq.add_keyframe(delay1 + anim1 + delay2, k2) seq.add_keyframe(delay1 + anim1 + delay2 + anim2, k1) self.animate(seq)
def play(self, *args, **kwargs): seq = Sequence(loop=self.details.loop) seq.add_keyframes(*self.details.keyframes.items()) self.obj.animate(seq)
def select_keyframe(self, *args, **kwargs): self.details.set_current_keyframe(int( self.keyframes_radio.active.text)) seq = Sequence() seq.add_keyframe(0, self.details.current_keyframe) self.obj.animate(seq)
def enter_scene(self, previous_scene): down = KeyFrame(position=self.actor.position) up = KeyFrame(position=(430, 430)) sequence = Sequence(loop=True) sequence.add_keyframes((0, down), (.5, up), (1, down)) self.actor.animate(sequence)