예제 #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_make_a_sequence_from_keyframe():
    proxy = a.AnimationManagerProxy(arcade.Sprite())
    seq = proxy._sequence_from_keyframe(a.KeyFrame(position=(100, 400)),
                                        duration=10,
                                        callback=lambda: None,
                                        loop=True)
    assert seq.loop
    assert seq.total_time == 10
    assert seq.callbacks[10]
    assert len(seq) == 2
    assert seq[10].frame.position == (100, 400)
예제 #7
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)
예제 #8
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