diff options
author | Marco 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) |
commit | 1e3af85c4076fd03bc01592c615d3d2e291ef3a9 (patch) | |
tree | 62547bee305d8864775706c18a02815cf90ea276 /examples | |
parent | a292b642e1ee6d0907fd618dd580c4f552a8db58 (diff) |
Implement basic animation
Diffstat (limited to 'examples')
-rwxr-xr-x | examples/scene/scene.py | 26 |
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() |