annotate nodejs/mbapp.js @ 1160:1a699dc00fa3

Fix the issue of not removing node in old scene when switching scenes. - When a timeline is playing and crossing two scenes (tween block), nodes, for the old scene, in duplicate group must be removed. But, it is not. - It is fixed by checking if nodes, in the duplicate group, are also in the key frame next to the new scene. All nodes that is not in next key frame are remove.
author Thinker K.F. Li <thinker@codemud.net>
date Tue, 28 Dec 2010 13:35:34 +0800
parents 593a418ed8bf
children 4c5bcaba28ea
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);
716
72abb4154936 Add mbapp module
wycc
parents:
diff changeset
104 }
72abb4154936 Add mbapp module
wycc
parents:
diff changeset
105 app.prototype.loadSVG=function(fname) {
914
e4474cac20da Implement the page stack
wycc
parents: 911
diff changeset
106 this.svg.load(this.mb_rt,this.mb_rt.root,fname)
716
72abb4154936 Add mbapp module
wycc
parents:
diff changeset
107 }
72abb4154936 Add mbapp module
wycc
parents:
diff changeset
108
730
e77ae2d23245 Add addKeyListener to handle key input.
wycc
parents: 729
diff changeset
109 app.prototype.KeyPress = function(evt) {
e77ae2d23245 Add addKeyListener to handle key input.
wycc
parents: 729
diff changeset
110 if (this.onKeyPress) this.onKeyPress(evt.sym);
911
7c4df3c1027f Fix the indentation
wycc
parents: 909
diff changeset
111 if (evt.sym in this.keymap) {
7c4df3c1027f Fix the indentation
wycc
parents: 909
diff changeset
112 this.keymap[evt.sym]();
7c4df3c1027f Fix the indentation
wycc
parents: 909
diff changeset
113 }
730
e77ae2d23245 Add addKeyListener to handle key input.
wycc
parents: 729
diff changeset
114 }
e77ae2d23245 Add addKeyListener to handle key input.
wycc
parents: 729
diff changeset
115
716
72abb4154936 Add mbapp module
wycc
parents:
diff changeset
116 app.prototype.loop=function() {
721
01d02382dea7 Refactory the mbapp and testsvg to use keyboard events
wycc
parents: 716
diff changeset
117 this.mb_rt.redraw_all();
01d02382dea7 Refactory the mbapp and testsvg to use keyboard events
wycc
parents: 716
diff changeset
118 this.mb_rt.flush();
01d02382dea7 Refactory the mbapp and testsvg to use keyboard events
wycc
parents: 716
diff changeset
119 }
762
6133319d3fb4 Add udpate command
wycc
parents: 731
diff changeset
120 app.prototype.update=function() {
6133319d3fb4 Add udpate command
wycc
parents: 731
diff changeset
121 this.mb_rt.redraw_all();
6133319d3fb4 Add udpate command
wycc
parents: 731
diff changeset
122 this.mb_rt.flush();
6133319d3fb4 Add udpate command
wycc
parents: 731
diff changeset
123 }
721
01d02382dea7 Refactory the mbapp and testsvg to use keyboard events
wycc
parents: 716
diff changeset
124 app.prototype.get=function(name) {
01d02382dea7 Refactory the mbapp and testsvg to use keyboard events
wycc
parents: 716
diff changeset
125 return this.mb_rt.mbnames[name];
01d02382dea7 Refactory the mbapp and testsvg to use keyboard events
wycc
parents: 716
diff changeset
126 }
01d02382dea7 Refactory the mbapp and testsvg to use keyboard events
wycc
parents: 716
diff changeset
127 app.prototype.addKeyboardListener=function(type,f) {
01d02382dea7 Refactory the mbapp and testsvg to use keyboard events
wycc
parents: 716
diff changeset
128 return this.mb_rt.kbevents.add_event_observer(type,f);
716
72abb4154936 Add mbapp module
wycc
parents:
diff changeset
129 }
724
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
130 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
131 this.mb_rt.redraw_changed();
724
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
132 this.mb_rt.flush();
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
133 }
730
e77ae2d23245 Add addKeyListener to handle key input.
wycc
parents: 729
diff changeset
134 app.prototype.dump=function() {
e77ae2d23245 Add addKeyListener to handle key input.
wycc
parents: 729
diff changeset
135 sys.puts(this.onKeyPress);
e77ae2d23245 Add addKeyListener to handle key input.
wycc
parents: 729
diff changeset
136 }
e77ae2d23245 Add addKeyListener to handle key input.
wycc
parents: 729
diff changeset
137
e77ae2d23245 Add addKeyListener to handle key input.
wycc
parents: 729
diff changeset
138 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
139 if (typeof(key) == 'number')
1719484ed15d Make the argument key can be an array to register multiple keys.
wycc
parents: 730
diff changeset
140 this.keymap[key] = f;
911
7c4df3c1027f Fix the indentation
wycc
parents: 909
diff changeset
141 else {
7c4df3c1027f Fix the indentation
wycc
parents: 909
diff changeset
142 for(k in key) {
7c4df3c1027f Fix the indentation
wycc
parents: 909
diff changeset
143 this.keymap[k] = f;
731
1719484ed15d Make the argument key can be an array to register multiple keys.
wycc
parents: 730
diff changeset
144 }
911
7c4df3c1027f Fix the indentation
wycc
parents: 909
diff changeset
145 }
730
e77ae2d23245 Add addKeyListener to handle key input.
wycc
parents: 729
diff changeset
146 }
716
72abb4154936 Add mbapp module
wycc
parents:
diff changeset
147
978
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
148
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
149 app.prototype.changeScene=function(s) {
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
150 var nth;
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
151 if (typeof(s)=='number') {
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
152 var i;
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
153 nth = s;
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
154 } else {
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
155 nth = this.svg.getFrameNumber(s);
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
156 if (nth == -1) return;
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
157 }
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
158 var scenes = this.svg.scenes;
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
159 for(i=0;i<scenes.length;i++) {
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
160 try {
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
161 if (nth >=scenes[i].start && nth <=scenes[i].end) {
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
162 this.get(scenes[i].ref).show();
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
163 } else {
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
164 this.get(scenes[i].ref).hide();
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
165 }
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
166 } catch(e) {
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
167 sys.puts(e);
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
168 sys.puts(scenes[i].ref);
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
169 }
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
170 }
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
171 }
1138
593a418ed8bf Add some stub for the animation.
wycc
parents: 978
diff changeset
172
593a418ed8bf Add some stub for the animation.
wycc
parents: 978
diff changeset
173 app.prototype.runToScene=function(n) {
593a418ed8bf Add some stub for the animation.
wycc
parents: 978
diff changeset
174
593a418ed8bf Add some stub for the animation.
wycc
parents: 978
diff changeset
175 }
593a418ed8bf Add some stub for the animation.
wycc
parents: 978
diff changeset
176
978
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
177 app.prototype.addSceneListener=function(n, cb) {
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
178 sys.puts("This is not implemented yet")
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
179 }
78312b44f48c Implement Scene API.
wycc
parents: 914
diff changeset
180
872
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
181 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
182 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
183 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
184 var background;
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
185 var paint;
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
186
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
187 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
188 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
189
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
190 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
191 _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
192 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
193 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
194 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
195 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
196
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
197 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
198 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
199 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
200 this.keymap = {};
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
201 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
202 }
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
203
bcc63b20d5c6 mbapp.js support to create an application with existed window
Thinker K.F. Li <thinker@codemud.net>
parents: 827
diff changeset
204 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
205
716
72abb4154936 Add mbapp module
wycc
parents:
diff changeset
206 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
207 exports.app_with_win = app_with_win;
721
01d02382dea7 Refactory the mbapp and testsvg to use keyboard events
wycc
parents: 716
diff changeset
208
01d02382dea7 Refactory the mbapp and testsvg to use keyboard events
wycc
parents: 716
diff changeset
209 // Put all key definition here
820
7875e8026e86 Change the key from up/down to left/right
wycc
parents: 784
diff changeset
210 exports.KEY_LEFT = 0xff51;
729
299ed9319dc6 Use key symbols instead of keycodes.
Thinker K.F. Li <thinker@branda.to>
parents: 724
diff changeset
211 exports.KEY_UP = 0xff52;
820
7875e8026e86 Change the key from up/down to left/right
wycc
parents: 784
diff changeset
212 exports.KEY_RIGHT = 0xff53;
729
299ed9319dc6 Use key symbols instead of keycodes.
Thinker K.F. Li <thinker@branda.to>
parents: 724
diff changeset
213 exports.KEY_DOWN = 0xff54;
820
7875e8026e86 Change the key from up/down to left/right
wycc
parents: 784
diff changeset
214 exports.KEY_ENTER = 0xff0d;
724
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
215 exports.EVT_ANY=0;
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
216 exports.EVT_MOUSE_OVER=1;
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
217 exports.EVT_MOUSE_OUT=2;
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
218 exports.EVT_MOUSE_MOVE=3;
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
219 exports.EVT_MOUSE_BUT_PRESS4;
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
220 exports.EVT_MOUSE_BUT_RELEASE=5
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
221 exports.EVT_KB_PRESS=6;
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
222 exports.EVT_KB_RELEASE=7;
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
223 exports.EVT_PROGM_COMPLETE=8;
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
224 exports.EVT_RDMAN_REDRAW=9;
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
225 exports.EVT_MONITOR_ADD=10;
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
226 exports.EVT_MONITOR_REMOVE=11;
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
227 exports.EVT_MONITOR_FREE=12;
503f3d18248e Add symbolic name of event types.
wycc
parents: 721
diff changeset
228 exports.EVT_MOUSE_MOVE_RAW=13;
827
7eb5421a9864 exports the image loader
wycc
parents: 822
diff changeset
229 exports.ldr = ldr;