annotate nodejs/mbapp.js @ 1397:a19f6cecf3c8

Hide the last frame.
author wycc
date Sat, 02 Apr 2011 06:00:25 +0800
parents a5672125e515
children 9cebe429508c
rev   line source
822
586e50f82c1f Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents: 820
diff changeset
1 // -*- indent-tabs-mode: t; tab-width: 8; c-basic-offset: 4; -*-
586e50f82c1f Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents: 820
diff changeset
2 // vim: sw=4:ts=8:sts=4
716
72abb4154936 Add mbapp module
wycc
parents:
diff changeset
3 var mbfly = require("mbfly");
72abb4154936 Add mbapp module
wycc
parents:
diff changeset
4 var svg = require("./svg");
730
e77ae2d23245 Add addKeyListener to handle key input.
wycc
parents: 729
diff changeset
5 var sys = require("sys");
716
72abb4154936 Add mbapp module
wycc
parents:
diff changeset
6 var ldr = mbfly.img_ldr_new(".");
784
37a1bd3e3ce1 mbapp accept arguments for display, width and height
Thinker K.F. Li <thinker@codemud.net>
parents: 762
diff changeset
7
854
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
8 function _reverse(m1) {
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
9 var rev = new Array(1, 0, 0, 0, 1, 0);
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
10 var m = new Array(m1[0], m1[1], m1[2], m1[3], m1[4], m1[5]);
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
11
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
12 rev[3] = -m[3] / m[0];
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
13 m[3] = 0;
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
14 m[4] += rev[3] * m[1];
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
15 m[5] += rev[3] * m[2];
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
16
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
17 rev[1] = -m[1] / m[4];
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
18 rev[0] += rev[1] * rev[3];
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
19 m[1] = 0;
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
20 m[2] += rev[1] * m[5];
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
21
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
22 rev[2] = -m[2];
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
23 rev[5] = -m[5];
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
24
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
25 rev[0] = rev[0] / m[0];
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
26 rev[1] = rev[1] / m[0];
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
27 rev[2] = rev[2] / m[0];
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
28
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
29 rev[3] = rev[3] / m[4];
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
30 rev[4] = rev[4] / m[4];
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
31 rev[5] = rev[5] / m[4];
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
32
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
33 return rev;
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
34 }
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
35
853
13e0953c3fb3 backup transform matrix when create a new coord
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
36 function _decorate_mb_rt(mb_rt) {
854
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
37 var coord;
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
38
853
13e0953c3fb3 backup transform matrix when create a new coord
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
39 mb_rt._mbapp_saved_coord_new = mb_rt.coord_new;
13e0953c3fb3 backup transform matrix when create a new coord
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
40 mb_rt.coord_new = function(parent) {
13e0953c3fb3 backup transform matrix when create a new coord
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
41 var coord;
13e0953c3fb3 backup transform matrix when create a new coord
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
42
13e0953c3fb3 backup transform matrix when create a new coord
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
43 coord = this._mbapp_saved_coord_new(parent);
854
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
44 coord.type = "coord";
884
6c8e4e1f3a39 Maintain a list of children
Thinker K.F. Li <thinker@codemud.net>
parents: 874
diff changeset
45 coord.children = [];
853
13e0953c3fb3 backup transform matrix when create a new coord
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
46 coord._mbapp_saved_mtx = [coord[0], coord[1], coord[2],
13e0953c3fb3 backup transform matrix when create a new coord
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
47 coord[3], coord[4], coord[5]];
854
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
48 coord._mbapp_saved_rev_mtx = _reverse(coord._mbapp_saved_mtx);
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
49 coord.parent = parent;
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
50 coord._mbapp_saved_add_shape = coord.add_shape;
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
51 coord.add_shape = function(shape) {
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
52 var coord;
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
53
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
54 this._mbapp_saved_add_shape(shape);
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
55 shape.parent = this;
884
6c8e4e1f3a39 Maintain a list of children
Thinker K.F. Li <thinker@codemud.net>
parents: 874
diff changeset
56 this.children.push(shape);
854
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
57 }
884
6c8e4e1f3a39 Maintain a list of children
Thinker K.F. Li <thinker@codemud.net>
parents: 874
diff changeset
58
6c8e4e1f3a39 Maintain a list of children
Thinker K.F. Li <thinker@codemud.net>
parents: 874
diff changeset
59 parent.children.push(coord);
854
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
60
853
13e0953c3fb3 backup transform matrix when create a new coord
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
61 return coord;
13e0953c3fb3 backup transform matrix when create a new coord
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
62 };
854
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
63
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
64 /*
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
65 * Decorate root coord
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
66 */
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
67 coord = mb_rt.root;
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
68 coord.type = "coord";
884
6c8e4e1f3a39 Maintain a list of children
Thinker K.F. Li <thinker@codemud.net>
parents: 874
diff changeset
69 coord.children = [];
854
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
70 coord._mbapp_saved_mtx = [coord[0], coord[1], coord[2],
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
71 coord[3], coord[4], coord[5]];
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
72 coord._mbapp_saved_rev_mtx = _reverse(coord._mbapp_saved_mtx);
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
73 coord._mbapp_saved_add_shape = coord.add_shape;
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
74 coord.add_shape = function(shape) {
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
75 var coord;
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
76
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
77 this._mbapp_saved_add_shape(shape);
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
78 shape.parent = this;
eff2f580b536 Use accessor to return bbox values
Thinker K.F. Li <thinker@codemud.net>
parents: 853
diff changeset
79 }
853
13e0953c3fb3 backup transform matrix when create a new coord
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
80 }
784
37a1bd3e3ce1 mbapp accept arguments for display, width and height
Thinker K.F. Li <thinker@codemud.net>
parents: 762
diff changeset
81
37a1bd3e3ce1 mbapp accept arguments for display, width and height
Thinker K.F. Li <thinker@codemud.net>
parents: 762
diff changeset
82 app=function(display, w, h) {
37a1bd3e3ce1 mbapp accept arguments for display, width and height
Thinker K.F. Li <thinker@codemud.net>
parents: 762
diff changeset
83 var self = this;
37a1bd3e3ce1 mbapp accept arguments for display, width and height
Thinker K.F. Li <thinker@codemud.net>
parents: 762
diff changeset
84 var mb_rt;
716
72abb4154936 Add mbapp module
wycc
parents:
diff changeset
85
784
37a1bd3e3ce1 mbapp accept arguments for display, width and height
Thinker K.F. Li <thinker@codemud.net>
parents: 762
diff changeset
86 if(typeof display == "undefined")
37a1bd3e3ce1 mbapp accept arguments for display, width and height
Thinker K.F. Li <thinker@codemud.net>
parents: 762
diff changeset
87 display = ":0.0";
37a1bd3e3ce1 mbapp accept arguments for display, width and height
Thinker K.F. Li <thinker@codemud.net>
parents: 762
diff changeset
88 if(typeof w == "undefined")
37a1bd3e3ce1 mbapp accept arguments for display, width and height
Thinker K.F. Li <thinker@codemud.net>
parents: 762
diff changeset
89 w = 720;
37a1bd3e3ce1 mbapp accept arguments for display, width and height
Thinker K.F. Li <thinker@codemud.net>
parents: 762
diff changeset
90 if(typeof h == "undefined")
37a1bd3e3ce1 mbapp accept arguments for display, width and height
Thinker K.F. Li <thinker@codemud.net>
parents: 762
diff changeset
91 h = 480;
37a1bd3e3ce1 mbapp accept arguments for display, width and height
Thinker K.F. Li <thinker@codemud.net>
parents: 762
diff changeset
92
37a1bd3e3ce1 mbapp accept arguments for display, width and height
Thinker K.F. Li <thinker@codemud.net>
parents: 762
diff changeset
93 mb_rt = this.mb_rt = new mbfly.mb_rt(display, w, h);
853
13e0953c3fb3 backup transform matrix when create a new coord
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
94 _decorate_mb_rt(mb_rt);
784
37a1bd3e3ce1 mbapp accept arguments for display, width and height
Thinker K.F. Li <thinker@codemud.net>
parents: 762
diff changeset
95 var background = mb_rt.rect_new(0, 0, 720, 480, 0, 0);
37a1bd3e3ce1 mbapp accept arguments for display, width and height
Thinker K.F. Li <thinker@codemud.net>
parents: 762
diff changeset
96 var paint = mb_rt.paint_color_new(1, 1, 1, 1);
37a1bd3e3ce1 mbapp accept arguments for display, width and height
Thinker K.F. Li <thinker@codemud.net>
parents: 762
diff changeset
97 paint.fill(background);
37a1bd3e3ce1 mbapp accept arguments for display, width and height
Thinker K.F. Li <thinker@codemud.net>
parents: 762
diff changeset
98 mb_rt.root.add_shape(background);
37a1bd3e3ce1 mbapp accept arguments for display, width and height
Thinker K.F. Li <thinker@codemud.net>
parents: 762
diff changeset
99
909
45625c200efe Fix tab issue.
wycc
parents: 889
diff changeset
100 this.mb_rt.kbevents.add_event_observer(exports.EVT_KB_PRESS, function(evt) { self.KeyPress(evt);});
45625c200efe Fix tab issue.
wycc
parents: 889
diff changeset
101 this.keymap={};
45625c200efe Fix tab issue.
wycc
parents: 889
diff changeset
102 this.onKeyPress = null;
914
e4474cac20da Implement the page stack
wycc
parents: 911
diff changeset
103 this.svg = new svg.loadSVG(this.mb_rt,this.mb_rt.root,null);
1380
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
104 this.frame_interval = 1000/12; // 12 frame per second
716
72abb4154936 Add mbapp module
wycc
parents:
diff changeset
105 }
72abb4154936 Add mbapp module
wycc
parents:
diff changeset
106 app.prototype.loadSVG=function(fname) {
1380
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
107 this.svg.load(this.mb_rt,this.mb_rt.root,fname);
1391
ff8122c59648 Change the default frame rat to be 12
wycc
parents: 1383
diff changeset
108 this.changeScene(0);
1396
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
109 sys.puts("xxxx");
716
72abb4154936 Add mbapp module
wycc
parents:
diff changeset
110 }
72abb4154936 Add mbapp module
wycc
parents:
diff changeset
111
730
e77ae2d23245 Add addKeyListener to handle key input.
wycc
parents: 729
diff changeset
112 app.prototype.KeyPress = function(evt) {
e77ae2d23245 Add addKeyListener to handle key input.
wycc
parents: 729
diff changeset
113 if (this.onKeyPress) this.onKeyPress(evt.sym);
911
7c4df3c1027f Fix the indentation
wycc
parents: 909
diff changeset
114 if (evt.sym in this.keymap) {
7c4df3c1027f Fix the indentation
wycc
parents: 909
diff changeset
115 this.keymap[evt.sym]();
7c4df3c1027f Fix the indentation
wycc
parents: 909
diff changeset
116 }
730
e77ae2d23245 Add addKeyListener to handle key input.
wycc
parents: 729
diff changeset
117 }
e77ae2d23245 Add addKeyListener to handle key input.
wycc
parents: 729
diff changeset
118
716
72abb4154936 Add mbapp module
wycc
parents:
diff changeset
119 app.prototype.loop=function() {
721
01d02382dea7 Refactory the mbapp and testsvg to use keyboard events
wycc
parents: 716
diff changeset
120 this.mb_rt.redraw_all();
01d02382dea7 Refactory the mbapp and testsvg to use keyboard events
wycc
parents: 716
diff changeset
121 this.mb_rt.flush();
01d02382dea7 Refactory the mbapp and testsvg to use keyboard events
wycc
parents: 716
diff changeset
122 }
762
6133319d3fb4 Add udpate command
wycc
parents: 731
diff changeset
123 app.prototype.update=function() {
6133319d3fb4 Add udpate command
wycc
parents: 731
diff changeset
124 this.mb_rt.redraw_all();
6133319d3fb4 Add udpate command
wycc
parents: 731
diff changeset
125 this.mb_rt.flush();
6133319d3fb4 Add udpate command
wycc
parents: 731
diff changeset
126 }
721
01d02382dea7 Refactory the mbapp and testsvg to use keyboard events
wycc
parents: 716
diff changeset
127 app.prototype.get=function(name) {
01d02382dea7 Refactory the mbapp and testsvg to use keyboard events
wycc
parents: 716
diff changeset
128 return this.mb_rt.mbnames[name];
01d02382dea7 Refactory the mbapp and testsvg to use keyboard events
wycc
parents: 716
diff changeset
129 }
01d02382dea7 Refactory the mbapp and testsvg to use keyboard events
wycc
parents: 716
diff changeset
130 app.prototype.addKeyboardListener=function(type,f) {
01d02382dea7 Refactory the mbapp and testsvg to use keyboard events
wycc
parents: 716
diff changeset
131 return this.mb_rt.kbevents.add_event_observer(type,f);
716
72abb4154936 Add mbapp module
wycc
parents:
diff changeset
132 }
724
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
133 app.prototype.refresh=function() {
886
3457f2d8b0b8 Only redraw changed when calling app.refresh() in JS
Thinker K.F. Li <thinker@codemud.net>
parents: 884
diff changeset
134 this.mb_rt.redraw_changed();
724
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
135 this.mb_rt.flush();
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
136 }
730
e77ae2d23245 Add addKeyListener to handle key input.
wycc
parents: 729
diff changeset
137 app.prototype.dump=function() {
e77ae2d23245 Add addKeyListener to handle key input.
wycc
parents: 729
diff changeset
138 sys.puts(this.onKeyPress);
e77ae2d23245 Add addKeyListener to handle key input.
wycc
parents: 729
diff changeset
139 }
e77ae2d23245 Add addKeyListener to handle key input.
wycc
parents: 729
diff changeset
140
e77ae2d23245 Add addKeyListener to handle key input.
wycc
parents: 729
diff changeset
141 app.prototype.addKeyListener=function(key,f) {
731
1719484ed15d Make the argument key can be an array to register multiple keys.
wycc
parents: 730
diff changeset
142 if (typeof(key) == 'number')
1719484ed15d Make the argument key can be an array to register multiple keys.
wycc
parents: 730
diff changeset
143 this.keymap[key] = f;
911
7c4df3c1027f Fix the indentation
wycc
parents: 909
diff changeset
144 else {
7c4df3c1027f Fix the indentation
wycc
parents: 909
diff changeset
145 for(k in key) {
7c4df3c1027f Fix the indentation
wycc
parents: 909
diff changeset
146 this.keymap[k] = f;
731
1719484ed15d Make the argument key can be an array to register multiple keys.
wycc
parents: 730
diff changeset
147 }
911
7c4df3c1027f Fix the indentation
wycc
parents: 909
diff changeset
148 }
730
e77ae2d23245 Add addKeyListener to handle key input.
wycc
parents: 729
diff changeset
149 }
716
72abb4154936 Add mbapp module
wycc
parents:
diff changeset
150
1376
4c5bcaba28ea Check in so that we can check the crash issues.
wycc
parents: 1138
diff changeset
151 app.prototype.generateScaleTween=function(src,dest,p) {
1391
ff8122c59648 Change the default frame rat to be 12
wycc
parents: 1383
diff changeset
152 sys.puts("p="+ p);
1376
4c5bcaba28ea Check in so that we can check the crash issues.
wycc
parents: 1138
diff changeset
153 src.hide();
4c5bcaba28ea Check in so that we can check the crash issues.
wycc
parents: 1138
diff changeset
154 // Duplicate the group
1379
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
155 var nodes = src.node.childNodes();
1376
4c5bcaba28ea Check in so that we can check the crash issues.
wycc
parents: 1138
diff changeset
156 if (src.dup == null) {
1396
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
157 var dup = this.mb_rt.coord_new(src.parent);
1379
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
158 for (i in nodes) {
1396
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
159 var child_dup = this.mb_rt.coord_new(dup);
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
160 var n = nodes[i];
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
161 var c = n.coord;
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
162 var k = child_dup.clone_from_subtree(c);
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
163 n.coord.dup = child_dup;
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
164 sys.puts(n);
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
165 sys.puts("c[0] = "+c[0]+" c[1]="+c[1]+" c[2]="+c[2]+" c[3]="+c[3]+" c[4]="+c[4]+" c[5]="+c[5]);
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
166 k[0] = c[0];
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
167 k[1] = c[1];
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
168 k[2] = c[2];
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
169 k[3] = c[3];
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
170 k[4] = c[4];
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
171 k[5] = c[5];
1379
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
172 }
1376
4c5bcaba28ea Check in so that we can check the crash issues.
wycc
parents: 1138
diff changeset
173 src.dup = dup;
4c5bcaba28ea Check in so that we can check the crash issues.
wycc
parents: 1138
diff changeset
174 } else {
4c5bcaba28ea Check in so that we can check the crash issues.
wycc
parents: 1138
diff changeset
175 dup = src.dup;
1379
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
176 src.dup.show();
1376
4c5bcaba28ea Check in so that we can check the crash issues.
wycc
parents: 1138
diff changeset
177 }
1379
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
178 //dup.hide();
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
179 //dest.hide();
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
180 //sys.puts(dup);
1376
4c5bcaba28ea Check in so that we can check the crash issues.
wycc
parents: 1138
diff changeset
181
1379
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
182 for(i in nodes) {
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
183 n= nodes[i];
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
184 coord = n.coord;
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
185 var attr = n.attr('id');
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
186 if (attr == null) continue;
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
187 var id = attr.value();
1391
ff8122c59648 Change the default frame rat to be 12
wycc
parents: 1383
diff changeset
188 sys.puts("id="+id);
1396
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
189 this.generateScaleTweenObject(coord.dup,coord,coord.target,p,id);
1379
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
190 }
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
191 }
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
192 function printcoord(s)
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
193 {
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
194 sys.puts(s[0]+" "+s[1]+" "+s[2]+" "+s[3]+" "+s[4]+" "+s[5]);
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
195 }
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
196
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
197 function mul(a,b)
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
198 {
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
199 return [a[0]*b[0]+a[1]*b[3], a[0]*b[1]+a[1]*b[4], a[0]*b[2]+a[1]*b[5]+a[2],
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
200 a[3]*b[0]+a[4]*b[3], a[3]*b[1]+a[4]*b[4], a[3]*b[2]+a[4]*b[5]+a[5]];
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
201 }
1376
4c5bcaba28ea Check in so that we can check the crash issues.
wycc
parents: 1138
diff changeset
202
1396
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
203 app.prototype.generateScaleTweenObject=function(coord,src,dest,p,id) {
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
204 sys.puts(src.node);
1391
ff8122c59648 Change the default frame rat to be 12
wycc
parents: 1383
diff changeset
205 sys.puts("src=["+src.sx+","+src.sy+","+src.r+","+src.tx+","+src.ty);
1396
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
206 sys.puts("id="+dest.node.attr('id')+" dest=["+dest.sx+","+dest.sy+","+dest.r+","+dest.tx+","+dest.ty);
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
207 sys.puts("src.center="+src.center);
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
208 sys.puts("src.center.x="+src.center.x+" src.center.y="+src.center.y);
1392
cd5fb45bc247 Check if the scenes is defined. Disable the changeScene function if the scenes is not defined for the pure MB program.
wycc
parents: 1391
diff changeset
209 if (src == null) return;
1379
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
210 var p1 = 1-p;
1392
cd5fb45bc247 Check if the scenes is defined. Disable the changeScene function if the scenes is not defined for the pure MB program.
wycc
parents: 1391
diff changeset
211 var x1 = src.center.x;
cd5fb45bc247 Check if the scenes is defined. Disable the changeScene function if the scenes is not defined for the pure MB program.
wycc
parents: 1391
diff changeset
212 var y1 = src.center.y;
1396
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
213
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
214 // For the svg:use, the transform matrix is the transform of teh svg:use and the elements inside it
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
215 var d,sx,sy,r,tx,ty;
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
216 if (dest.isuse) {
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
217 sx = 1+(dest.sx-1)*p1;
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
218 sy = 1+(dest.sy-1)*p1;
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
219 r = dest.r*p1;
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
220 tx = dest.tx*p1;
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
221 ty = dest.ty*p1;
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
222 } else {
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
223 sx = src.sx*p+dest.sx*p1;
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
224 sy = src.sy*p+dest.sy*p1;
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
225 r = src.r*p+dest.r*p1;
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
226 tx = src.tx*p+dest.tx*p1;
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
227 ty = src.ty*p+dest.ty*p1;
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
228 }
1392
cd5fb45bc247 Check if the scenes is defined. Disable the changeScene function if the scenes is not defined for the pure MB program.
wycc
parents: 1391
diff changeset
229 var mt = [1, 0, -x1, 0, 1, -y1];
1382
7ee0658025f3 Support opacity tween for the primitives.
wycc
parents: 1380
diff changeset
230 var opacity;
1379
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
231 var ms;
1382
7ee0658025f3 Support opacity tween for the primitives.
wycc
parents: 1380
diff changeset
232
1396
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
233 opacity = src.opacity*p1 + dest.opacity*p;
1382
7ee0658025f3 Support opacity tween for the primitives.
wycc
parents: 1380
diff changeset
234 coord.opacity = opacity;
7ee0658025f3 Support opacity tween for the primitives.
wycc
parents: 1380
diff changeset
235
1379
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
236 if (r == 0) {
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
237 m = mt;
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
238 } else {
1380
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
239 ms= [Math.cos(r), Math.sin(r),0,-Math.sin(r), Math.cos(r),0];
1379
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
240 m = mul(ms,mt);
1376
4c5bcaba28ea Check in so that we can check the crash issues.
wycc
parents: 1138
diff changeset
241 }
1392
cd5fb45bc247 Check if the scenes is defined. Disable the changeScene function if the scenes is not defined for the pure MB program.
wycc
parents: 1391
diff changeset
242 sys.puts("x1="+x1);
cd5fb45bc247 Check if the scenes is defined. Disable the changeScene function if the scenes is not defined for the pure MB program.
wycc
parents: 1391
diff changeset
243 sys.puts("y1="+y1);
1379
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
244 m = mul([sx,0,0,0,sy,0],m);
1392
cd5fb45bc247 Check if the scenes is defined. Disable the changeScene function if the scenes is not defined for the pure MB program.
wycc
parents: 1391
diff changeset
245 m = mul([1,0,x1,0,1,y1],m);
1379
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
246 m = mul([1,0,tx,0,1,ty],m);
1392
cd5fb45bc247 Check if the scenes is defined. Disable the changeScene function if the scenes is not defined for the pure MB program.
wycc
parents: 1391
diff changeset
247 //m[2] = -m[2];
1379
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
248 coord[0] = m[0];
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
249 coord[1] = m[1];
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
250 coord[2] = m[2];
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
251 coord[3] = m[3];
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
252 coord[4] = m[4];
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
253 coord[5] = m[5];
1396
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
254 sys.puts("id="+id+" src.tx="+src.tx+" src.ty="+src.ty+" tx="+tx+" ty="+ty+" r="+r+" x1="+x1+" y1="+y1+" p="+p+" "+m[0]+","+m[1]+","+m[2]+","+m[3]+","+m[4]+","+m[5]);
1376
4c5bcaba28ea Check in so that we can check the crash issues.
wycc
parents: 1138
diff changeset
255 }
978
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
256
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
257 app.prototype.changeScene=function(s) {
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
258 var nth;
1391
ff8122c59648 Change the default frame rat to be 12
wycc
parents: 1383
diff changeset
259 sys.puts(s);
ff8122c59648 Change the default frame rat to be 12
wycc
parents: 1383
diff changeset
260 sys.puts(typeof(s));
978
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
261 if (typeof(s)=='number') {
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
262 var i;
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
263 nth = s;
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
264 } else {
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
265 nth = this.svg.getFrameNumber(s);
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
266 if (nth == -1) return;
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
267 }
1391
ff8122c59648 Change the default frame rat to be 12
wycc
parents: 1383
diff changeset
268 sys.puts("goto to scene "+nth);
1380
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
269 this.currentScene = nth;
978
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
270 var scenes = this.svg.scenes;
1392
cd5fb45bc247 Check if the scenes is defined. Disable the changeScene function if the scenes is not defined for the pure MB program.
wycc
parents: 1391
diff changeset
271 if (scenes == null) return;
1376
4c5bcaba28ea Check in so that we can check the crash issues.
wycc
parents: 1138
diff changeset
272 for(i=0;i<scenes.length-1;i++) {
978
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
273 try {
1397
a19f6cecf3c8 Hide the last frame.
wycc
parents: 1396
diff changeset
274 this.get(scenes[i].ref).hide();
978
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
275 if (nth >=scenes[i].start && nth <=scenes[i].end) {
1391
ff8122c59648 Change the default frame rat to be 12
wycc
parents: 1383
diff changeset
276 sys.puts("find");
1376
4c5bcaba28ea Check in so that we can check the crash issues.
wycc
parents: 1138
diff changeset
277 if (scenes[i].type == 'normal' || i == scenes.length-1) {
4c5bcaba28ea Check in so that we can check the crash issues.
wycc
parents: 1138
diff changeset
278 this.get(scenes[i].ref).show();
4c5bcaba28ea Check in so that we can check the crash issues.
wycc
parents: 1138
diff changeset
279 } else if (scenes[i].type == 'scale') {
1391
ff8122c59648 Change the default frame rat to be 12
wycc
parents: 1383
diff changeset
280 sys.puts(i+","+scenes[i+1].start+","+scenes[i].end);
1376
4c5bcaba28ea Check in so that we can check the crash issues.
wycc
parents: 1138
diff changeset
281 if (scenes[i].end == (scenes[i+1].start-1)) {
1379
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
282 var p = 1-(nth-scenes[i].start)/(scenes[i].end-scenes[i].start+1);
1376
4c5bcaba28ea Check in so that we can check the crash issues.
wycc
parents: 1138
diff changeset
283 this.generateScaleTween(this.get(scenes[i].ref),this.get(scenes[i+1].ref),p);
4c5bcaba28ea Check in so that we can check the crash issues.
wycc
parents: 1138
diff changeset
284 } else {
4c5bcaba28ea Check in so that we can check the crash issues.
wycc
parents: 1138
diff changeset
285 // If there is no second key frame defined, fall back to the normal
4c5bcaba28ea Check in so that we can check the crash issues.
wycc
parents: 1138
diff changeset
286 this.get(scenes[i].ref).show();
4c5bcaba28ea Check in so that we can check the crash issues.
wycc
parents: 1138
diff changeset
287 }
1379
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
288 this.get(scenes[i+1].ref).hide();
1376
4c5bcaba28ea Check in so that we can check the crash issues.
wycc
parents: 1138
diff changeset
289 }
4c5bcaba28ea Check in so that we can check the crash issues.
wycc
parents: 1138
diff changeset
290
978
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
291 } else {
1391
ff8122c59648 Change the default frame rat to be 12
wycc
parents: 1383
diff changeset
292 sys.puts("hide "+scenes[i].ref);
978
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
293 this.get(scenes[i].ref).hide();
1396
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
294 if (this.get(scenes[i].ref).dup)
a5672125e515 Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically.
wycc
parents: 1392
diff changeset
295 this.get(scenes[i].ref).dup.hide();
978
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
296 }
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
297 } catch(e) {
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
298 sys.puts(e);
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
299 sys.puts(scenes[i].ref);
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
300 }
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
301 }
1397
a19f6cecf3c8 Hide the last frame.
wycc
parents: 1396
diff changeset
302 this.get(scenes[i].ref).hide();
1379
f0a156705977 Implement changeScene for the scribbo animation.
wycc
parents: 1376
diff changeset
303 this.refresh();
978
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
304 }
1138
593a418ed8bf Add some stub for the animation.
wycc
parents: 978
diff changeset
305
1380
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
306 app.prototype.runToScene=function(s) {
1391
ff8122c59648 Change the default frame rat to be 12
wycc
parents: 1383
diff changeset
307 sys.puts(s);
ff8122c59648 Change the default frame rat to be 12
wycc
parents: 1383
diff changeset
308 sys.puts(typeof(s));
1380
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
309 if (typeof(s)=='number') {
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
310 var i;
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
311 nth = s;
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
312 } else {
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
313 nth = this.svg.getFrameNumber(s);
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
314 if (nth == -1) return;
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
315 }
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
316 var self = this;
1391
ff8122c59648 Change the default frame rat to be 12
wycc
parents: 1383
diff changeset
317 sys.puts(this.currentScene+","+nth);
1380
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
318 if (nth > this.currentScene) {
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
319 this.targetScene = nth;
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
320 this.startScene = this.currentScene;
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
321 this.starttime = Date.now();
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
322 setTimeout(function() {
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
323 self.skipFrame()
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
324 }, this.frame_interval);
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
325 } else {
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
326 this.changeScene(nth);
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
327 }
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
328 }
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
329
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
330 app.prototype.skipFrame=function() {
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
331 var self = this;
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
332 sys.puts("n="+this.currentScene);
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
333 if (this.currentScene != this.targetScene) {
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
334 nextframe = this.startScene + Math.round((Date.now() - this.starttime)/this.frame_interval);
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
335 if (nextframe > this.targetScene)
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
336 nextframe = this.targetScene;
1391
ff8122c59648 Change the default frame rat to be 12
wycc
parents: 1383
diff changeset
337 sys.puts("change to scene "+nextframe);
1380
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
338 this.changeScene(nextframe);
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
339 setTimeout(function() {
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
340 self.skipFrame()
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
341 }, this.frame_interval);
76d2aad5da35 Implement runToScene method for the Flash-like animation.
wycc
parents: 1379
diff changeset
342 }
1138
593a418ed8bf Add some stub for the animation.
wycc
parents: 978
diff changeset
343 }
593a418ed8bf Add some stub for the animation.
wycc
parents: 978
diff changeset
344
978
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
345 app.prototype.addSceneListener=function(n, cb) {
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
346 sys.puts("This is not implemented yet")
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
347 }
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
348
872
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
349 var app_with_win = function(display, win) {
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
350 var self = this;
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
351 var mb_rt;
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
352 var background;
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
353 var paint;
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
354
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
355 if(typeof display == "undefined" || typeof win == "undefined")
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
356 throw "Invalid argument";
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
357
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
358 mb_rt = this.mb_rt = new mbfly.mb_rt_with_win(display, win);
874
ec8d7e9c9642 Decorate mb_rt created by mb_rt_with_win()
Thinker K.F. Li <thinker@codemud.net>
parents: 873
diff changeset
359 _decorate_mb_rt(mb_rt);
872
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
360 background = mb_rt.rect_new(0, 0, 720, 480, 0, 0);
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
361 paint = mb_rt.paint_color_new(1, 1, 1, 1);
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
362 paint.fill(background);
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
363 mb_rt.root.add_shape(background);
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
364
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
365 this.mb_rt.kbevents.
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
366 add_event_observer(exports.EVT_KB_PRESS,
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
367 function(evt) { self.KeyPress(evt); });
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
368 this.keymap = {};
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
369 this.onKeyPress = null;
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
370 }
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
371
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
372 app_with_win.prototype = app.prototype;
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
373
716
72abb4154936 Add mbapp module
wycc
parents:
diff changeset
374 exports.app=app;
872
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
375 exports.app_with_win = app_with_win;
721
01d02382dea7 Refactory the mbapp and testsvg to use keyboard events
wycc
parents: 716
diff changeset
376
01d02382dea7 Refactory the mbapp and testsvg to use keyboard events
wycc
parents: 716
diff changeset
377 // Put all key definition here
820
7875e8026e86 Change the key from up/down to left/right
wycc
parents: 784
diff changeset
378 exports.KEY_LEFT = 0xff51;
729
299ed9319dc6 Use key symbols instead of keycodes.
Thinker K.F. Li <thinker@branda.to>
parents: 724
diff changeset
379 exports.KEY_UP = 0xff52;
820
7875e8026e86 Change the key from up/down to left/right
wycc
parents: 784
diff changeset
380 exports.KEY_RIGHT = 0xff53;
729
299ed9319dc6 Use key symbols instead of keycodes.
Thinker K.F. Li <thinker@branda.to>
parents: 724
diff changeset
381 exports.KEY_DOWN = 0xff54;
820
7875e8026e86 Change the key from up/down to left/right
wycc
parents: 784
diff changeset
382 exports.KEY_ENTER = 0xff0d;
724
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
383 exports.EVT_ANY=0;
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
384 exports.EVT_MOUSE_OVER=1;
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
385 exports.EVT_MOUSE_OUT=2;
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
386 exports.EVT_MOUSE_MOVE=3;
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
387 exports.EVT_MOUSE_BUT_PRESS4;
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
388 exports.EVT_MOUSE_BUT_RELEASE=5
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
389 exports.EVT_KB_PRESS=6;
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
390 exports.EVT_KB_RELEASE=7;
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
391 exports.EVT_PROGM_COMPLETE=8;
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
392 exports.EVT_RDMAN_REDRAW=9;
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
393 exports.EVT_MONITOR_ADD=10;
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
394 exports.EVT_MONITOR_REMOVE=11;
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
395 exports.EVT_MONITOR_FREE=12;
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
396 exports.EVT_MOUSE_MOVE_RAW=13;
827
7eb5421a9864 exports the image loader
wycc
parents: 822
diff changeset
397 exports.ldr = ldr;