예제 #1
0
def test_it_can_add_a_keyframes_to_a_sequence():
    s = a.Sequence()
    k1 = a.KeyFrame()
    k2 = a.KeyFrame()
    some_callback = lambda: 1
    s.add_keyframes((0, k1), (1, k2, some_callback))
    assert id(s[0].frame) == id(k1)
    assert id(s[1].frame) == id(k2)
    assert s[1].callback == some_callback
예제 #2
0
def test_it_can_generate_points_in_time_from_a_sequence():
    s = a.Sequence()
    k1 = a.KeyFrame(position=(10, 10), angle=0, height=100)
    k2 = a.KeyFrame(position=(10, 100), angle=100, height=200)
    s.add_keyframes((0, k1), (1, k2))
    pits = s._to_point_in_times()
    assert len(pits) == 3
    assert list(pits.keys()) == ['position', 'angle', 'height']
    assert pits['position'].point_at(.5) == (10, 55)
    assert pits['angle'].point_at(.5) == 50
    assert pits['height'].point_at(.5) == 150
    assert pits['height'].point_at(1) == 200
    assert pits['height'].point_at(10) == 200
예제 #3
0
def test_it_can_animate_a_sprite_over_time():
    s = a.Sequence()
    k1 = a.KeyFrame(position=(10, 10), angle=0, height=100)
    k2 = a.KeyFrame(position=(10, 100), angle=100, height=200)
    s.add_keyframes((0, k1), (1, k2))
    inst = sprite_instance()

    anim = a.Animator(inst, s)
    anim.blip(.5)
    assert inst.position == (10, 55)
    assert not anim.finished
    anim.blip(1)
    assert inst.position == (10, 100)
    assert anim.finished
예제 #4
0
def test_it_can_play_animations():
    s = a.Sequence()
    k1 = a.KeyFrame(position=(10, 10))
    k2 = a.KeyFrame(position=(10, 100))
    s.add_keyframes((0, k1), (1, k2))
    inst = arcade.Sprite()
    manager = a.AnimationManager()
    manager.fire(inst, s)
    assert len(manager.animations) == 1
    manager._blip(.5)
    assert len(manager.animations) == 1
    assert inst.position == (10, 55)
    manager._blip(2)
    assert len(manager.animations) == 0
    assert inst.position == (10, 100)
예제 #5
0
def test_it_can_execute_a_callback_at_a_given_time():
    s = a.Sequence()
    k1 = a.KeyFrame(position=(10, 10))
    k2 = a.KeyFrame(position=(10, 100))
    s.add_keyframes((0, k1), (1, k2))
    callback = mock.Mock().some_callback
    s.add_callback(.5, callback)
    inst = sprite_instance()
    anim = a.Animator(inst, s)
    anim.blip(.4)
    callback.assert_not_called()
    anim.blip(.2)
    callback.assert_called_once()
    anim.blip(.4)
    callback.assert_called_once()
    assert not anim._upcoming_callback
예제 #6
0
def test_it_can_add_a_keyframe_to_a_sequence():
    s = a.Sequence()
    k = a.KeyFrame()
    s.add_keyframe(0, k)
    assert id(s[0].frame) == id(k)
예제 #7
0
 def make_sequence():
     s = a.Sequence()
     k1 = a.KeyFrame(position=(10, 10))
     k2 = a.KeyFrame(position=(10, 100))
     s.add_keyframes((0, k1), (1, k2))
     return s
예제 #8
0
def test_it_can_make_a_sequence_from_a_sprite():
    s = a.Sequence().from_sprite(sprite_instance())
    assert len(s) == 1
    assert s[0].frame.position == (10, 20)