def _animation(self): "Calculates an offset to move and calls the move_offset." t = ecore.time_get() dt = t - self.time ddv = (self.speed * dt) + (0.5 * self.accel * dt * dt) dv = int(ddv) if dt < ecore.animator_frametime_get() / 2.0: return True if self.forced: if self.forced_goal == 0: self.stop() return False if -1 < dv < 1: dv = int(self.speed / abs(self.speed)) if self.forced_goal < abs(dv): if dv < 0: dv = -(self.forced_goal) else: dv = self.forced_goal self.forced_goal = 0 else: self.forced_goal -= abs(dv) else: # not forced if abs(ddv) < self.min_movement and \ abs(self.speed) < self.min_speed: self.stop() return False self.speed = self.speed + (self.accel * dt) self.time = t moved = self.move_offset(dv) # Stop animation if move_offset couldn't move anymore or if already # crossed speed zero (stop) line. if not moved or (self.speed * self.accel) > 0: self.stop() return False return True
#!/usr/bin/env python import ecore def cb_true(n, t, a): print "cb_true:", n, t, a return True def cb_false(n, t, a): print "cb_false:", n, t, a return False ecore.animator_frametime_set(1.0/24.0) assert ecore.animator_frametime_get() == 1.0/24.0 a0 = ecore.animator_add(cb_true, 123, "teste", a=456) a1 = ecore.Animator(cb_false, 789, "bla", a="something in a") a2 = ecore.animator_add(ecore.main_loop_quit) print "before: a0=", a0 print "before: a1=", a1 print "before: a2=", a2 ecore.main_loop_begin() print "main loop stopped" print "after: a0=", a0 print "after: a1=", a1 print "after: a2=", a2 a0.delete() del a0
import ecore def cb_true(n, t, a): print "cb_true:", n, t, a return True def cb_false(n, t, a): print "cb_false:", n, t, a return False ecore.animator_frametime_set(1.0 / 24.0) assert ecore.animator_frametime_get() == 1.0 / 24.0 a0 = ecore.animator_add(cb_true, 123, "teste", a=456) a1 = ecore.Animator(cb_false, 789, "bla", a="something in a") a2 = ecore.animator_add(ecore.main_loop_quit) print "before: a0=", a0 print "before: a1=", a1 print "before: a2=", a2 ecore.main_loop_begin() print "main loop stopped" print "after: a0=", a0 print "after: a1=", a1 print "after: a2=", a2