cookbook: Added a second example to show "overlapping" transitions

Added another JSON example to show how transitions can
be easily overlapped when using ClutterAnimator (two
sequences of 5 transitions, simultaneous with two
sequences of 1 transition).

Modified the C JSON loader program so it can be used with
this example as well.
This commit is contained in:
Elliot Smith 2010-09-03 11:56:33 +01:00
parent c0aa72a042
commit 60ff660d42
2 changed files with 87 additions and 2 deletions

View File

@ -0,0 +1,80 @@
[
{
"type" : "ClutterStage",
"id" : "stage",
"width" : 550,
"height" : 350,
"color" : "#333355ff",
"signals" : [
{ "name" : "destroy", "handler" : "clutter_main_quit" },
{ "name" : "key-press-event", "handler" : "foo_key_pressed_cb" }
],
"children" : [
{
"type" : "ClutterRectangle",
"id" : "rectangle",
"color" : "red",
"width" : 50,
"height" : 50,
"x" : 0,
"y" : 0,
"scale-gravity" : "center"
}
]
},
{
"type" : "ClutterAnimator",
"id" : "animator",
"duration" : 4000,
"properties" : [
{
"object" : "rectangle",
"name" : "x",
"ease-in" : true,
"keys" : [
[ 0.0, "linear", 0.0 ],
[ 0.1, "easeInCubic", 50.0 ],
[ 0.2, "easeInCubic", 200.0 ],
[ 0.4, "easeInCubic", 75.0 ],
[ 0.5, "easeOutCubic", 300.0 ],
[ 1.0, "easeInCubic", 400.0 ]
]
},
{
"object" : "rectangle",
"name" : "y",
"ease-in" : true,
"keys" : [
[ 0.0, "linear", 0.0 ],
[ 0.1, "easeInCubic", 50.0 ],
[ 0.2, "easeInCubic", 200.0 ],
[ 0.4, "easeInCubic", 75.0 ],
[ 0.5, "easeOutCubic", 150.0 ],
[ 1.0, "easeInCubic", 200.0 ]
]
},
{
"object" : "rectangle",
"name" : "scale-x",
"ease-in" : true,
"keys" : [
[ 0.0, "linear", 1.0 ],
[ 1.0, "linear", 4.0 ]
]
},
{
"object" : "rectangle",
"name" : "scale-y",
"ease-in" : true,
"keys" : [
[ 0.0, "linear", 1.0 ],
[ 1.0, "linear", 4.0 ]
]
}
]
}
]

View File

@ -30,19 +30,24 @@ foo_key_pressed_cb (ClutterActor *actor,
int
main (int argc, char *argv[])
{
gchar *filename = UI_FILE;
ClutterScript *script;
ClutterActor *stage;
GError *error = NULL;
if (argc > 1)
filename = argv[1];
clutter_init (&argc, &argv);
script = clutter_script_new ();
clutter_script_load_from_file (script, UI_FILE, &error);
clutter_script_load_from_file (script, filename, &error);
if (error != NULL)
{
g_critical ("Error loading ClutterScript file %s\n%s", UI_FILE, error->message);
g_critical ("Error loading ClutterScript file %s\n%s", filename, error->message);
g_error_free (error);
exit (EXIT_FAILURE);
}