forked from ialexi/hedwig
-
Notifications
You must be signed in to change notification settings - Fork 2
/
capturing.js
75 lines (61 loc) · 1.83 KB
/
capturing.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/**
This is our test view. It will capture a touch, and, after one second,
pass it through to the child view. Depending on the shouldStack property,
it will stack while passing.
In this example, the top view stacks, the bottom one does not.
*/
var Tester = SC.View.extend({
backgroundColor: "white",
shouldStack: NO,
captureTouch: function() {
return YES;
},
touchStart: function(touch) {
this._hasTouch = touch;
this.get("layer").style.backgroundColor = "red";
// in one second, we'll pass the touch along.
this.invokeLater("beginContentTouches", 1000, touch);
},
beginContentTouches: function(touch) {
// if our touch hasn't changed in the meantime
if (touch === this._hasTouch) {
// we'll pass the touch along.
touch.captureTouch(this, this.get("shouldStack"));
}
},
touchEnd: function(touch) {
this._hasTouch = NO;
this.get("layer").style.backgroundColor = "white";
},
touchCancelled: function(touch) {
this._hasTouch = NO;
this.get("layer").style.backgroundColor = "white";
},
childViews: "inner".w(),
inner: SC.View.design({
layout: { left: 50, top: 50, right: 50, bottom: 50 },
backgroundColor: "gray",
touchStart: function() {
this.get("layer").style.backgroundColor = "blue";
},
touchEnd: function() {
this.get("layer").style.backgroundColor = "gray";
}
})
});
var MyExampleView = SC.View.extend({
backgroundColor: "#aaa",
childViews: "stacks doesNot".w(),
stacks: Tester.extend({
layout: { top: 10, left: 10, width: 200, height: 200 },
shouldStack: YES
}),
doesNot: Tester.extend({
layout: { top: 230, left: 10, width: 200, height: 200 },
shouldStack: NO
})
});
// bootstrap code :)
exports.getDemoView = function() {
return MyExampleView;
};