в цикле JS-скрипта не срабатывает функция
Вложений: 5
Недавно нашел одну занятную статеечку, попытался в ней разобраться. Смысл затеи в том, что питоний скрипт генерирует из пачки "кадров" будущей анимации один png, состоящий из первой картинки, кусочков, меняющихся из кадра в кадр, и некоторых мета-данных JSON, несущих полезную смысловую нагрузку, т.н. "packed png". На веб-странице анимация отрисовывается на canvas с помощью JavaScript. Не буду рассказывать, сколько дней я заводил python со всеми либами под win32, чтоб скомпилить packed png, ибо не в этом суть вопроса, проблему я поймал уже на стадии включения в html. А проблема в том, что анимируется только самый последний canvas. Я начал подозревать, что дело в замыкании, но разобраться не смог...
<html><head><script type="text/javascript" src="example_anim.js"></script> <script type="text/javascript" src="myanim_anim.js"></script> <script type="text/javascript" src="animation.js"></script> </head><body> <div><canvas id="anim_example" class="anim_example" width="800" height="450" style="border: 4px dotted #aaa"> <div id="anim_fallback1" class="anim_fallback1" style="width: 800px; height: 450px; position: relative;"></div> <p></canvas></div> <div><canvas id="anim_my2" class="anim_my2" width="600" height="400" style="border: 4px dotted #aaa"> <div id="anim_fallback3" class="anim_fallback3" style="width: 500px; height: 300px; position: relative;"></div> <p></canvas></div> </script> </body> params = new Array ( {"img_url":"example_packed.png", "timeline":example_timeline, "canvas_id":"anim_example", "fallback_id":"anim_fallback1"}, {"img_url":"my2_packed.png", "timeline":my2_timeline, "canvas_id":"anim_my2", "fallback_id":"anim_fallback3"} ); for(var i=0; i< params.length; i++) { set_animation( params[i].img_url, params[i].timeline, params[i].canvas_id, params[i].fallback_id) } P.S.: При некоторых умственных усилиях эта идея позволит сократить объем данных для анимирования до размеров, сравнимых с размером одного фрейма, что, конечно, повышает её полезность. :) |
Часовой пояс GMT +3, время: 06:50. |