diff examples/dynamic/main.c @ 242:d3fe0a0f3a8b

Implement MBApp API and modify the dynamic example to use this API.
author wycc
date Wed, 31 Dec 2008 22:37:21 +0800
parents d347a577a232
children d36abace2ce4
line wrap: on
line diff
--- a/examples/dynamic/main.c	Wed Dec 31 02:08:40 2008 +0800
+++ b/examples/dynamic/main.c	Wed Dec 31 22:37:21 2008 +0800
@@ -24,6 +24,7 @@
     co_aix orx,ory;
     int start_x,start_y;
     observer_t *obs1,*obs2;
+    int currentscene;
 }MyAppData;
 
 #define MBAPP_DATA(app,type) ((type *) ((app)->private))
@@ -185,7 +186,7 @@
 
     app->rt = rt;
     app->rdman =  X_MB_rdman(rt);
-    app->rootsprite= sprite_load("button",app->rdman, app->rdman->root_coord);
+    app->rootsprite= sprite_load(module,app->rdman, app->rdman->root_coord);
     return app;
 }
 
@@ -194,6 +195,11 @@
     app->private = (void *) data;
 }
 
+mb_tman_t *MBApp_getTimer(MBApp *app)
+{
+    return X_MB_tman(app->rt);
+}
+
 void MBApp_loop(MBApp *en)
 {
     /*
@@ -287,16 +293,41 @@
 
 MBApp *myApp;
 
+void switch_scene(const mb_timeval_t *tmo, const mb_timeval_t *now,void *arg)
+{
+    MyAppData *en = MBAPP_DATA((MBApp *)arg,MyAppData );
+    mb_timeval_t timer,interval;
+
+    
+    get_now(&timer);
+    MB_TIMEVAL_SET(&interval, 1 ,0);
+    MB_TIMEVAL_ADD(&timer, &interval);
+    mb_tman_timeout( MBApp_getTimer(myApp), &timer, switch_scene, myApp);
+
+    en->currentscene = (en->currentscene+1) %2;
+    printf("switch to scene %d\n", en->currentscene);
+    MB_SPRITE_GOTO_SCENE(myApp->rootsprite,en->currentscene);
+}
+
 int main(int argc, char * const argv[]) {
     subject_t *subject;
     mb_button_t *b;
     mb_obj_t *button;
     MyAppData data;
+    mb_timeval_t tmo,interval;
 
-    myApp = MBApp_Init("button");
+    if (argc > 1) 
+	    myApp = MBApp_Init(argv[1]);
+    else
+	    myApp = MBApp_Init("scene");
+    data.currentscene=0;
     MBApp_setData(myApp,&data);
-    b = mb_button_new(myApp, myApp->rootsprite, "btn");
-    mb_button_add_onClick(b, test,NULL);
+    //b = mb_button_new(myApp, myApp->rootsprite, "btn");
+    //mb_button_add_onClick(b, test,NULL);
+    get_now(&tmo);
+    MB_TIMEVAL_SET(&interval, 1 ,0);
+    mb_tman_timeout( MBApp_getTimer(myApp), &tmo, switch_scene, myApp);
+    
 
     MBApp_loop(myApp);