-
Notifications
You must be signed in to change notification settings - Fork 13
/
CHANGES
551 lines (360 loc) · 24 KB
/
CHANGES
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
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
<<<<<<< Updated upstream
v1.4 / Wed Sep 02 2015 14:04:30 +0200 / 35facc26afe0d7c051873bf0e85abf8a23466256
================================================================================
* Breaking change in importing groups with shifted bands
v1.3 / Wed Sep 02 2015 09:57:22 +0200 / b63ad617008927457d81b19e81f9fa5b0cc485ff
================================================================================
* A completely new API, 79 commits, 2164 lines added, 2778 deleted, built almost
from scratch, no Builder at all, everything is in the Element now! Beautiful,
Precious, Irresistible!
* Truly a huge amount of fixes in comparison to v1.2
v1.2 / Tue Aug 12 2014 18:04:40 +0200 / f1773845d89a8cc783c915af8a8bd0eca7078a7c
================================================================================
* Player is initialised from a container now (a warning appears, if it was initialized from canvas)
* Player stores it's private data in `__anm` property of elements
* Player is able to auto-initialize from a tag like `<div anm-player-target anm-src="http://clips.animatron.com/0d8887993614c3b6d57535eca50fa014.json?width=200&height=200" anm-auto-play="true"></div>` w/o any additional JavaScript
* Ability to cancel remote requests
* Audio problems, incl. volume tween were fixed
* Ignore scene with duration == 0
* Publish page (the one called when you publish project from Animatron) fixes
* Resource loading fixes
* Draw images directly to canvas instead of caching them (improves speed!)
* Play-counter fixes
v1.1.0 / Thu Aug 07 2014 16:44:38 +0200 / da42b59d8f6b203382a05b40ee47bff895f65b0c
==================================================================================
(a.k.a. v1.1)
* Use Engines! i.e. at client, DOM-engine is used as a proxy for all canvas & DOM related functionality
* Fix `contains` test to include scale in applying of pivot/registration point
* Fix image mockup in tests
* ...Though tests are disabled now :(
* There's a root `anm` namespace now, the parent for all classes and utils
* The `require`-driven modules structure, though not perfect for the moment
* Implement importing binary-encoded paths from Animatron
* Implement paths caching when importing from Animatron
* Fixes in masks, not complete
* Give the ability for external scripts to disable loading audio or images or both, it was required for preview generation.
* Pass time in scripting module handlers
* Make projects always infinite in scripting module
* Jumps in scripting module
* Support master audio
* Change `VISIBLE` flag to `HIDDEN` when importing
* Support scripting for groups
* Fixes for controls (when resizing and detaching player)
* Stop loading animation on error, if last happened.
* Fixes for importing local time
* Fixes in audio & scripting modules
* Loading screen for player w/o controls
* Build system improvements
* Controls restyling & refactoring, several times + support for controls "themes"
* Support for thumbnail (an image shown on background instead of first frame)
* Ability to pass thumbnail URL with snapshot URL
* Pass a lot of useful information to modifiers, like `dt`, and `duration`
* Fixed and improved canvas resizing
* Refactor the way player applies options and stores them (truly awesome!)
* Fix passing parameters through the snapshot URL
* Publishing page and script tuning (they are now separated, `publish.js` is in Player's repo though)
* GZIP support, smarter minifying
* Notify Animatron API about plays
* `S_COMPLETE` event (player surely finished playing the scene, not just stopped by accident)
* `S_CHANGE_STATE` event to be fired on every player state change
* Ability for user to overrride player styles, player creates it's own and custom CSS classes instead of writing directly into elements' style
* Color tween, both fill and stroke
* Custom fonts support
* Text baseline fixes
* Controls are not attached to body anymore, but placed next to player's canvas...
* ...and both are now placed in a wrapper div, which puts original canvas inside of itself, which breaks some things for users, but we weren't able to solve this another way in this version (CSS positioning was impossible in a lot of cases with previous model + recalculating controls position taken a lot CPU before)
v1.0 / Fri Nov 22 2013 16:48:34 +0100 / 4954236ec998cb33fc7deed0caf8979564bea858
================================================================================
* Accidentally switch to version 1.0
* Improve scripting support
* Pass time in scripting module handlers
* Make projects always infinite in scripting module
* Update scripting manual
* `findByName`, `goToScene` and `goToTime` functions for scripting
* Fixes for a lot of incompatibilies with Animatron Editor when importing
* Fix unsafe removing of elements when disposing scenes
* Fix already-playing-check for dynamic modes
* Give the ability for external scripts to disable loading audio or images or both, it was required for preview generation
* Fix `contains` test to include scale in applying of pivot/registration point
* Fix image mockup in tests
* New easings came from Editor
* Change `VISIBLE` flag to `HIDDEN` when importing
* Fix different problems with controls
v0.9.1601 / Mon Oct 28 13:05:29 2013 +0200 / 746dd95fcce7e1a52d2bfb56b45639e4fe1e2b7c
=====================================================================================
* Remove a play screen (the one with pause button) in a player
* Restyle the player colors completely
v0.9.16 / Thu Oct 24 2013 11:52:03 -0400 / dae00d67a34914f8b282721066a8f2c67d06c207
===================================================================================
* Initial support to import code snippets from Animatron (currently only `onclick` handler for draft purposes).
* Include `scripting` and `collision` modules in `animatron` bundle
* Fixes for several errors in sandbox with importing sprites
* Fixes for resource manager errors happening when someone already waiting for the resource
* Update previously outdated collisions module to new changes regarding with pivot & registration point
* Move type-checking and value-checking into `anm.js`, global namespace
* `findByName` and `findById` methods in `anm` namespace
v0.9.1504 / Mon Oct 21 2013 16:13:05 -0400 / 9dc67f2b976c38c2395a2faa0f446cf8d35c466c
=====================================================================================
+ Support Volume tween in Audio module (no support in Builder)
* Fix positioning text when importing from Editor
* Change text baseline to bottom instead of alphabetic
* Support underlined text
* Calculate text dimensions for specific lines and support it in multiline
v0.9.1503 / Mon Oct 14 2013 19:16:44 -0400 / b55d293bdfc11b14c187198ea3277bb5ab1e267b
=====================================================================================
* Audio buffering and fixes for audio module by @alexeypegov
* Player instances manager, to ease debugging (accessible from `__anm.player_manager`)
* Moved registering/providing/handling events code to `anm.js`
Usage:
var player_manager = __anm.player_manager;
player_manager.on(C.S_NEW_PLAYER, function(player) {
// handling new player
});
player_manager.on(C.S_PLAYER_DETACH, function(player) {
// handling detached player
});
var my_player_1 = player_manager.getPlayer('my-canvas-1');
console.log(player_manager.hash);
console.log(player_manager.instances);
* `__anm.console` object to be a safe way to log
* `onComplete` and `onError` are now optional in Resource Manager
* Proper error handling in Resource Manager
* Add optional logging to Resource Manager
* Fix subscribing to resource when it in loading progress in Resource Manager
* Fixes for the audio module errors handling
* Fixed double-call to `importCustomData` from Animatron importer
* Postpone playing methods to call them only after the successful result of remote resources loading process, if there were any; if there were no remote resources, the process is synchronous as before; if there were errors in process of loading, the error is thrown and shown to the watcher
v0.9.1502 / Mon Oct 07 2013 23:24:02 +0200 / 64c27db2a732570a57e59119b3d3f74fae616455
=====================================================================================
Convert Animatron sequential scenes to elements with bands shifted by required amount of time.
Also:
- `go` page improvements
- `favicon` for internal pages
v0.9.1501 / Fri Oct 04 2013 18:35:07 +0200 / 21a949ac105336bde8e65322c9fd0789b5580b72
=====================================================================================
Implemented a remote resource manager (`__anm.resource_manager`), which:
* Allows to subscribe with any number of callbacks to any number of resources and they'll be called when each of these resources was either loaded or failed to load.
* Stores the cache of all requested resources among with waiting and errors queue
* Do not loads any resource with it's own code, just requires a loader function.
Integrated it to `Sheet` class and `audio.js` module.
Also:
* New `RES_LOADING` state for the player
* New `RES_LOAD` event for the player which fires when player started to load resources
* `LOAD` is now fired only when all remote resources (if there were any) were loaded or failed
How to use:
* Get `__anm.resource_manager` instance
* When you need to load a resource, call `.loadOrGet` method of resource manager with:
* URL of the resource
* Loader function (it will not be called if resource is already in the cache) which gets `onsuccess` and `onerror` callbacks as arguments and should call them in the corresponding situation (like deferred AJAX call)
* Callback function which gets the resource value when it was successfully loaded
* To listen for specific resources to complete loading, call `.subscribe` method with array of required URLs and a callback (or array of callbacks) to be called when these resources are loaded or failed to load (or some loaded and some failed)
* If you have a local static resource and some subscriber to it's URL, just call `.trigger` method with URL and it's resource to force resource manager to notify subscribers for this resource. If it failed to load, call `.error` method with URL and error instance
v0.9.15 / Tue Sep 24 2013 23:51:17 +0200 / bcc07e7ef99c3a06ec79ba1817f112777f92e093
===================================================================================
Totally new controls design.
Among with that:
* new player states: `C.LOADING` (while loading a scene) and `C.ERROR` (when error was fired). In addition to the well-known old ones: `C.PLAYING`, `C.PAUSED`, `C.STOPPED` and `C.NOTHING`
* type of the last load target (internal, currently) is stored now: `C.LT_BUILDER`, `C.LT_SCENE`, `C.LT_CLIPS`, `C.LT_URL` and `C.LT_IMPORT`
* `InfoBlock` is completely controlled by `Controls` — so, when controls are disabled, there's also will be no info block.
* Now we know how to draw the Animatron Guy (on cached canvas)
* Improved test mocks and tests themselves
v0.9.1405 / Fri Sep 20 2013 00:00:07 +0200 / e9a3fd85b47238c40af794dc88ff398fc6e26270
=====================================================================================
Fixes:
* Swap two importers back, the compact-format importer is now in `animatron.js` bundle and is named `AnimatronImporter` (was in `animatron-publish.js` bundle and was named `AnimatronPublishImporter`), and the full-format importer is `AnimatronIntactImporter` and lays in `animatron-intact.js` bundle. It affects several files, including `go` page.
* Add handling player PAUSE event in audio module
v0.9.1404 / Thu Sep 12 2013 19:12:03 +0200 / 2b6d558f29d9c6328999e880c868a62f97f6fea8
=====================================================================================
Features:
* Support for the init file (anm.js), which configures the namespace, manages the way of player initialization process, prepares and stores some private global configuration.
* X_START and X_STOP events for bands
Fixes:
* Fix incorrect loop in audio module which caused
Fixes for the Compact a.k.a. Publish importer and to the `go` page:
* Supports duration of scenes
* Properly imports bands
* Supports element ID to be the first element of a layer's description array
* Properly tests end-mode for null
v0.9.1403 / Wed Aug 28 2013 12:05:15 -0700 / 84bf790ab3408ec9356d96e972c924be57bd3b56
=====================================================================================
Importer for minimized format is rewritten to support compact (array-based) format
Features:
* Shear/skew tween
* Compact (array-based) format support
Incompatibilities b/w Editor and Player:
Fixed:
* Text size
* Import of Scale and Alpha tweens
Still not fixed:
* Text Underline
* Speed of the Translate tween with a long path
* End modes for clips are not stable, so not fixing
* Importing partial scenes
v0.9.1402 / Wed Aug 14 2013 19:57:00 +0200 / 583039ea2af4a409bd7c06ba373d8ab7a1d7ab59
=====================================================================================
Fixes:
* Supports collapsed data for tweens, imported from Animatron Editor
Features:
* Adds the `animatron-publish` imported and `animatron-publish` bundle, they provide support of new minimized format from Editor
v0.9.1401 / Thu Aug 08 2013 03:29:03 +0200 / 3f2468a1312c1f382d9a79527cfdd858a9858ce5
=====================================================================================
Features:
* Refactored Animatron Importer
Fixes:
* Animatron Importer now properly passes loop mode to the children to fix current difference with editor
* Animatron Importer now correctly applies global bands to groups imported from editor
v0.9.14 / Fri Jul 26 2013 14:18:06 +0200 / 09f66d20225dee4ac861947bb45d61e34dbd25fd
===================================================================================
Features:
* Base state (static state for every element)
* Pivot support
Fixes:
* Sandbox stability
* Rotate-to-path tween when importing from Animatron
* Sevearal more importing fixes
* Rendering numbers for text (by @ahollenbach)
v0.9.13 / Fri Jul 19 2013 14:10:43 +0200 / e9c5025e17afb435481414d5f0435cb430289299
===================================================================================
Features:
* Basic audio support
* Shadows by @alexeypegov
Fixes:
* Calculate internal time for children
* Do not show invisible elements
v0.9.122 / Tue Jul 02 2013 01:19:41 +0200 / 9287bed0629f395268cc8dd98c1fba86d44228fc
====================================================================================
Fixes:
* Snapshot path in 'go' page
v0.9.121 / Tue Jul 02 2013 00:10:29 +0200 / ab040726b8228cb2e0e0a06b7b865cd0bca17057
====================================================================================
Fixes:
* Allows to re-add modifiers that were removed before
* Both old and new 'end' properties for clips, imported from Animatron, now default to C.ONCE instead of C.STAY
v0.9.12 / Mon May 27 11:00:59 2013 -0700 / 024740e3c19ac8566e44a0fd2131b6291ce1d93a
===================================================================================
* Versioning with Jake
Last PR #93: "Versioning"
v0.9.11 / Mon May 27 19:06:52 2013 +0200 / ac0e027ac95666dbb5ec4e90990ecebd4f421744
===================================================================================
This version includes almost complete implementation of versioning, but is required to be done before v0.9.12, to test versions mechanics before merging.
v0.9.1 / Mon May 20 23:24:52 2013 +0200 / 216a5f011e05fb83e3517a4dade022f1d9739a0a
==================================================================================
Includes:
* Improvements on Repeat modes like `once`/`stay`/`loop`/`bounce` (allow to restict last two with concrete number of times), it mostly came from Animatron Tool
* Totally new design for the controls
* Fix Pixel-ratio tests
* Show last frame when stopped playing in preview and video modes
* Major fixes regarding retina
* Fix scaling when scene aspect ratio equals to player aspect ratio
* Scaling scene to a size of player
* Improving sprites (a new code introduced)
* Tool compatibility
* Fixes scene and element duration issues with importing scenes from the tool
* Proper Calculation of Scene Duration + Element has Infinite Band by Default
* Generate Docs from Markdown files
* Sandbox improvements
* Building with Jake and Bundles
Last PR #92: "STAY is default mode for importing from Animatron"
v0.9 / Sun Mar 3 17:10:17 2013 -0800 / 5f9f4149a372ac4b16236880c3da795db98f2098
===============================================================================
Includes:
* Modifiers are back to normal and relative modifiers are now the optional part, though fully implemented and usable
* Relative tweens are also supported
* Improved tests automation (it is ok to run them from console now)
* Several fixes
* Image caching from @Nek
Still:
* Trigger-modifiers are still not very guaranteed to be called, especially in the end of the band
Last PR #72: "Tests Automation"
v0.246b / Fri Nov 2 14:56:17 2012 -0700 / bed582ae4ad3956a08f40af6f3dd79b73cb3b792
==================================================================================
**Major** change is that ALL types of the modifiers now receive _relative time_.
The another **major** change is that _tweens_ are TOTALLY identical to _band-restricted modifiers_ now, they just have predefined functions.
This version will **BREAK** most of the code used with previous versions. The version just before these changes has `v0.245` tag, so it is safe to switch to it and your code will work properly, but w
So, developers who use the engine should change their code accordingly, and I recommend to do it in a separate branch, use `v0.245` and `v0.246b` tags to checkout and switch versions of player.
Some new aggressive errors may appear while using new code, please report it to me, by e-mail or through issues, I'll try to fix them asap.
Final `v0.246` version will fix `AnimatronImporter`, new-found bugs and include docs. If you feel unsafe, you may wait to the final `v0.246` version which should fix bugs unrelated to animations and those
* tweens now act as a band-restricted modifiers, so they get value of `0` before their band wasn't started and value of `1` after their band; please keep that in mind when you use overlapping modifiers or
* simple modifiers now take time `t` in range of `0..1`, second argument is `duration`, so to get the actual value you should use `t * duration`; `data` is the _third_ argument now.
* default band for any empty element is back to `0..10`, before it was `0..MAX_INT` — it was changed back since all modifiers now get `0..1` of `t` and in previous version empty elements got the very smal
* state is now totally clean in modifiers when it comes inside on new frame, so code like `this.x += 5` will not work (and failed to work before, but it is another story), please use previous state that i
Modifiers types:
* `b().modify(function(t, [duration[, data]]) { ... })` — now modifier takes `t` in range `0..1`, and takes `duration`, which is duration of the element band (same to `this.$.duration()`).
* `b().modify([x, y], function(t, [duration[, data]]) { ... })`, will call a modifier through the inner band, getting _value from `0..1`_ in the duration of the band `[x, y]`, like tweens. It is important
* `b().modify(my_t, function(t, [duration[, data]]) { ... })` will call a modifier at `my_t` time or a bit later, if framerate is low, and will get actual time when it was called. `my_t` is like a band-ti
See example from [Previous PR#53](https://github.com/Animatron/player/pull/56) to get vision of new types of modifiers.
Other changes:
* Tweens are equal to band-modifiers, their functions are also changed accordingly
* Default band for empty element is now `0..10`
* It is now possible to pass easing for any modifier (I should also mention it in docs)
* Element state is now cleared on every frame (previously it was cloned and passed to new-frame modifiers)
* `scene.duration` and elements' bands calculation fixes, default band for the element is now [0, 10]
* More bands, scene & element duration tests, so they should work more polished
* Partly refactored errors to be collected in a single object
`v0.247` is planned to include relative-modifiers, so:
b().band([0, 5]).modify([2.5, 4], function(t) { ... })
b().band([0, 5]).rmodify([1/2, 4/5], function(t) { ... })
will be equal, and the same with triggers:
b().band([0, 5]).modify(2.5, function(t) { ... })
b().band([0, 5]).rmodify(1/2, function(t) { ... })
Last PR #57: "Time is relative in all of the modifiers. Tweens are now totally identical to band-restricted modifiers"
v0.245 / Mon Oct 29 01:42:46 2012 -0700 / 92c53a52632d70d14cbe6ee4d1ffae867b3a214f
==================================================================================
Transitional version. Introduces time-restricted modifiers, but their abilities differ alot, and it will be fixed in next versions.
+ `b().modify(function(t) { ... })`, acts like before
+ `b().modify([x, y], function(t) { ... })`, will call a modifier through the inner band, getting _value from `0..1`_ in the duration of the band `[x, y]`, like tweens. It is important to note that it wil
+ `b().modify(my_t, function(t) { ... })` will call a modifier at `my_t` time or a bit later, if framerate is low, and will get actual time when it was called. both `my_t` and `t` are relative to a band o
Also includes these inner things:
+ `stopAfter` argument for play to stop when played given amount of seconds
+ smart time-decisions for exact-time modifiers
+ timer-emulator for tests
+ play-and-wait-for-something-happen helper for tests
+ better grouping of painters and modifiers
* removed preview for modes other than C.M_VIDEO mode
Last PR #56: "Time is relative in all of the modifiers. Tweens are now totally identical to band-restricted modifiers"
v0.24 / Mon Oct 1 04:26:08 2012 -0700 / c95d1e30d2d73f75ec70b6add04609700fcf7137
================================================================================
Includes:
+ masks support, with fixes
+ callbacks to drawAt method, and every-frame callback
+ load scene from url
+ customizing player with url
+ retina support (mouse events sometimes produce incorrect positions)
+ unmodify/unpaint improved
+ tests
* fix arrow keys
* fix enabling/disabling elements in chains
* fixes for loading options from attributes/configuration object
Last PR: #55 "Retina support: Final touches"
v0.23 / Fri Sep 7 07:00:11 2012 -0700 / 0752b5ea0d86d5989e0546a6270c3f41726a4579
================================================================================
"A callback to call after every frame + some nice playing cycle/drawAt tests"
+ collisions module and all that stuff related to it: intersections/contains test
+ two-states mode (previous/current) for rendering, gives a lot of advantages for collisions and animations at all
+ data() method to store data within elements
+ iteration over child elements: each()/deach()
+ caching already wrapped elements in Builder -> faster access from modifiers
+ infinite bands
+ live adding/removing elements to/from scene
+ live adding/removing modifiers to/from elements
+ priorities from modifiers and painters
+ started tests
+ force focus on canvas if player is in dynamic mode
+ TeamCity integration
+ at() method to call a modifier at some concrete time
+ clear() method to clear the element
* elements-cloning fixes
* fix alpha tween
* fix circle shape
* fix player representation in all cases
* fix all of problems with playing appeared while developing previous versions
* fix __stopAnim callback to stop drawing once and only the corresponding rendering cycle
v0.22-patched / Wed May 23 16:53:32 2012 +0400 / 59e238c011a916e7b7d119c370fcda27810053c6
=========================================================================================
patch for v0.22
v0.22 / Tue May 22 13:22:48 2012 +0400 / a8dd55e126c3f8f7f3efa626fe376e483f05afa3
=================================================================================
* fix alpha encoding for FF
v0.21 / Tue Apr 10 18:47:08 2012 +0300 / 64b58e1d4e2f081358d7faaa50559fd3876c7215
=================================================================================
zoom in options + fix accidentally changed order of tweens applying