-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy path2012_02_11_Coder_Dojo_Sprite_Animation.txt
More file actions
388 lines (206 loc) · 7 KB
/
2012_02_11_Coder_Dojo_Sprite_Animation.txt
File metadata and controls
388 lines (206 loc) · 7 KB
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
Coder Dojo
2012-02-11
HTML5 - Javascript
Sprite Animation
Lost and found
We have a number of items in lost and found
Pens/Pencils/Paper not collected for a month will be used for the idea jar.
Technology not collected for a month will be used in projects.
Worryingly, there is a pair of uncollected glasses for almost a month now...
Interesting stuff this week
Paul Bakaus of Zynga Germany is converting their existing games to HTML5.
"I believe that the tech is ready to build those games. I think that the tech is not yet ready to build great 3D games since it's just about browser share penetration. But for 2D games and isometric games, it's the right time."
source - http://blog.games.com/2012/02/02/zynga-germany-html5-paul-bakaus/
Paul Bakaus
And above all...
be cool
Thank you to ..
Val Head
@VLH from whom I stole so many ideas
http://creativejs.com/2012/01/day-11-sprite-sheets/
and
Erica Gorman (wave please)
for putting together the artwork
To begin... get the sprite sheet
http://GitHub.com/WillKnott
Its in the repository
CoderDojo-HTML5-CanvasSpriteAnimationtake the cdsprite.png file
Fire up your editors...
Apple - Text Wrangler
Windows - Notepad ++
Linux - Komodo Edit
There is a reason... file handling
Lets start with a standard template
«!doctype html»
«html»
«head»
«meta charset="utf-8"»
«/head»
«body»
«script src=sani.js»
«/script»
«/body»
«/html»
And...
move the downloaded image to the same place as the html file
sami.js init part 1
// screen size variables
var SCREEN_WIDTH = window.innerWidth,
SCREEN_HEIGHT = window.innerHeight;
var canvas = document.createElement('canvas');
var c = canvas.getContext('2d');
canvas.width = SCREEN_WIDTH;
canvas.height = SCREEN_HEIGHT;
// Add our drawing canvas
document.body.appendChild(canvas);
part 2
//load the image
image = new Image();
image.src = "cdsprite.png";
c.drawImage(image,0,0,250,250,0,0,250,250);
To explain...
var SCREEN_WIDTH = window.innerWidth,
SCREEN_HEIGHT = window.innerHeight;
Figure out the size of the screen
To explain
var canvas = document.createElement('canvas');
var c = canvas.getContext('2d');
Set up the canvas on which we will draw our images
To explain
canvas.width = SCREEN_WIDTH;
canvas.height = SCREEN_HEIGHT;
Set the canvas to be the size of the screen
To explain
// Add our drawing canvas
document.body.appendChild(canvas);
And put the canvas on the screen
To explain
//load the image
image = new Image();
image.src = "cdsprite.png";
Create an image object
Explain Objects Will...
And define the src (source) part of the image object to be our sprite sheet
And the nasty one
c.drawImage(image,0,0,250,250,0,0,250,250);
Three parts.
1) The Sprite Sheet image
2) The part of the sheet we are copying from
3) The location on the screen we are pasting to
Of course, these numbers will have to change...
And if its working
You should be just displaying an image...
So lets change a few things...
// screen size variables
var SCREEN_WIDTH = window.innerWidth,
SCREEN_HEIGHT = window.innerHeight;
var canvas = document.createElement('canvas');
var c = canvas.getContext('2d');
canvas.width = SCREEN_WIDTH;
canvas.height = SCREEN_HEIGHT;
var initX = 0;
var initY = 0;
var xpos = initX;
var ypos = initY;
var index=0;
var numFrames = 30;
var frameSizeX= 253;
var frameSizeY= 280;
no more numbers (except 0)
// Add our drawing canvas
document.body.appendChild(canvas);
//load the image
image = new Image();
image.src = "cdsprite.png";
c.drawImage(image,
xpos,ypos,frameSizeX,frameSizeY,
0,0,frameSizeX, frameSizeY);
So now..
We are displaying the same image, but we are using variables to do it.
Variables change....
make things move 1
// Add our drawing canvas
document.body.appendChild(canvas);
//load the image
image = new Image();
image.src = "cdsprite.png";
image.onload = function() {
//The animation loop. Call loop so as
//to complete the animation once a second
setInterval(loop, 1000 / numFrames);
}
/This is the same timer that we used for the slideshow last time
And make a loop
function loop() {
//clear the canvas!
c.clearRect(0,0, SCREEN_HEIGHT,SCREEN_WIDTH);
c.drawImage(image,xpos,ypos,frameSizeX,frameSizeY,0,0,frameSizeX, frameSizeY);
xpos += frameSizeX;
//increase the index so you know which frame of the animation comes next
index += 1;
}
Why clear the canvas?
Because sometimes...
you can't overwrite cleanly
So clean the sheet first.
And now...
The animation will run once...
So when you reach the end
Start again...
function loop() {
c.clearRect(0,0, SCREEN_HEIGHT,SCREEN_WIDTH);
c.drawImage(image,xpos,ypos,frameSizeX,frameSizeY,0,0,frameSizeX, frameSizeY);
xpos += frameSizeX;
index += 1;
if (index »= numFrames) {
xpos = initX;
ypos = initY;
index=0;
}
So now...
You have an animation loop
Why is this important?
http://www.widgetworx.com/
Free to use sprite sheets for use in games
Now you know..
How to animate more
To do
Make your own sheets
Take the WidgetWorx ones
Make your own animations...
You don't have to ask for permission
http://www.gamesbrief.com/2012/02/time-to-stop-asking-for-permission/
You don't need to ask for permission to make a game.
You don't need to ask for a publisher anymore
You don't need to make a huge €60 game
Here you've learned
How to make a single building block
You can put those block together according to someone else's instructions
Or you can take those blocks
And do something else
Above all
Go be cool