Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@localhost.localdomain>2006-07-22 11:48:47 (GMT)
committer Marco Pesenti Gritti <marco@localhost.localdomain>2006-07-22 11:48:47 (GMT)
commit1e3af85c4076fd03bc01592c615d3d2e291ef3a9 (patch)
tree62547bee305d8864775706c18a02815cf90ea276 /examples
parenta292b642e1ee6d0907fd618dd580c4f552a8db58 (diff)
Implement basic animation
Diffstat (limited to 'examples')
-rwxr-xr-xexamples/scene/scene.py26
1 files changed, 23 insertions, 3 deletions
diff --git a/examples/scene/scene.py b/examples/scene/scene.py
index f404f6f..733b2b4 100755
--- a/examples/scene/scene.py
+++ b/examples/scene/scene.py
@@ -1,4 +1,5 @@
#!/usr/bin/python
+import math
import pygtk
pygtk.require('2.0')
@@ -8,10 +9,24 @@ from sugar.scene.Stage import Stage
from sugar.scene.Group import Group
from sugar.scene.PixbufActor import PixbufActor
from sugar.scene.CircleLayout import CircleLayout
+from sugar.scene.Timeline import Timeline
-def drawing_area_expose_cb(widget, event, stage):
+def __drawing_area_expose_cb(widget, event, stage):
stage.render(widget.window)
+def __next_frame_cb(timeline, frame_num, group):
+ angle = math.pi * 2 / timeline.get_n_frames() * frame_num
+ group.get_layout().set_angle(angle)
+ group.do_layout()
+
+ drawing_area.window.invalidate_rect(None, False)
+
+def __completed_cb(timeline, group):
+ group.get_layout().set_angle(0)
+ group.do_layout()
+
+ drawing_area.window.invalidate_rect(None, False)
+
stage = Stage()
pixbuf = gtk.gdk.pixbuf_new_from_file('background.png')
@@ -26,7 +41,7 @@ while i <= 5:
i += 1
layout = CircleLayout(100)
-icons_group.set_layout_manager(layout)
+icons_group.set_layout(layout)
stage.add(icons_group)
@@ -34,10 +49,15 @@ window = gtk.Window()
window.set_default_size(640, 480)
drawing_area = gtk.DrawingArea()
-drawing_area.connect('expose_event', drawing_area_expose_cb, stage)
+drawing_area.connect('expose_event', __drawing_area_expose_cb, stage)
window.add(drawing_area)
drawing_area.show()
window.show()
+timeline = Timeline(stage, 100)
+timeline.connect('next-frame', __next_frame_cb, icons_group)
+timeline.connect('completed', __completed_cb, icons_group)
+timeline.start()
+
gtk.main()