Ext.Draw Example
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
| Ext.define('MyApp.view.Asteroids', { requires: ['Ext.draw.*'] extend: 'Ext.window.Window', alias: 'widget.asteroids', rotation: 0, posX: 0, posY: 0, drawComponent: Ext.create('Ext.draw.Component', { id: 'space', width: 300, height: 300, viewBox: false, gradients: [{ id: 'g1', angle: 0, stops: { 0: { color: '#fff'}, 20: { color: '#fff'}, 100: { color: '#fff' } }}],listeners: { 'click': function(e, el, obj){ var myObj = Ext.get(e.getTarget('path')); console.log("You clicked on " + myObj.id); e.stopPropagation(); }, element: 'el' },items: [{ type: 'path', stroke: 'green', path: 'M50 50 L40 80 L60 80 Z', id: 'ship', fill: 'url(#g1)'}, { type: 'text', x: 25, y: 20, font: '20px Arial', text: 'Use your cursor keys to move the ship' }]}),moveShip: function(){ var rad = ((this.rotation - 90) * Math.PI) / 180; var dx = 1 * Math.cos(rad); var dy = 1 * Math.sin(rad); var sprite = Ext.getCmp('space').surface.items.first(); this.posX += dx; this.posY += dy; sprite.setAttributes({ translate: { x: this.posX, y: this.posY } }, true);Ext.Function.defer(this.moveShip, 5, this);},initComponent: function(){ Ext.apply(this, { layout: 'fit', width: 400, height: 300, items: [this.drawComponent] }); this.callParent(arguments); var nav = new Ext.util.KeyNav(Ext.getDoc(), { left: function(){ var sprite = Ext.getCmp('space').surface.items.first(); this.rotation -= 5; if (this.rotation < 0) this.rotation = 355; sprite.setAttributes({ rotation: { degrees: this.rotation } }, true); }, right: function(){ var sprite = Ext.getCmp('space').surface.items.first(); this.rotation += 5; if (this.rotation == 365) this.rotation = 0; sprite.setAttributes({ rotation: { degrees: this.rotation } }, true); }, up: function(){ Ext.Function.defer(this.moveShip, 5, this); }, scope: this});} // initComponent}); |
Comments
Post a Comment