Corrige les animations figées et le reporting SCORM dans le paquet exporté
Deux bugs distincts détectés dans le paquet Web/SCORM : - L'animation de marche du personnage dépend entièrement des touches clavier maintenues (heldKeys), qui ne sont alimentées que par des écouteurs keydown/keyup sur window. Un LMS comme SCORM Cloud charge index.html dans une iframe qui ne reçoit pas le focus clavier par défaut : aucune touche n'atteignait jamais window, donc le personnage ne bougeait/animait jamais. On force désormais le focus au chargement et on le reprend au premier clic dans le jeu. - scorm-api.js (qui pousse score/statut au LMS) était bien copié dans le zip mais jamais référencé par un <script> dans index.html, car build_scorm_package.py ne passait pas scorm_api_wrapper_url au template — le reporting SCORM (Completion/Success/Score) ne fonctionnait donc jamais depuis un export. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
413685e871
commit
00f7191a8b
@@ -252,6 +252,7 @@ def build_scorm_zip(slug):
|
|||||||
html = render_template(
|
html = render_template(
|
||||||
"play.html", game=game, screens_data=payload["screens"], payload_json=json.dumps(payload),
|
"play.html", game=game, screens_data=payload["screens"], payload_json=json.dumps(payload),
|
||||||
offline_mode=True, asset_url=lambda filename: "static/" + filename,
|
offline_mode=True, asset_url=lambda filename: "static/" + filename,
|
||||||
|
scorm_api_wrapper_url="static/js/play/offline/scorm-api.js",
|
||||||
)
|
)
|
||||||
html = _relativize_absolute_urls(html, slug)
|
html = _relativize_absolute_urls(html, slug)
|
||||||
html = _inline_icon_urls(html, payload["icon_data_uris"])
|
html = _inline_icon_urls(html, payload["icon_data_uris"])
|
||||||
|
|||||||
@@ -189,6 +189,14 @@
|
|||||||
// triggers.js. runScreenHeldKeyTriggers(), lui, est déjà appelé depuis
|
// triggers.js. runScreenHeldKeyTriggers(), lui, est déjà appelé depuis
|
||||||
// showScreen() comme runScreenTimerTriggers().
|
// showScreen() comme runScreenTimerTriggers().
|
||||||
bindHeldKeyTriggers();
|
bindHeldKeyTriggers();
|
||||||
|
// Le jeu exporté (SCORM) est souvent chargé dans une iframe par le LMS,
|
||||||
|
// qui ne reçoit pas le focus clavier automatiquement — sans focus, les
|
||||||
|
// événements keydown n'atteignent jamais window et le personnage ne
|
||||||
|
// bouge/anime jamais. On force le focus au chargement et on le
|
||||||
|
// reprend au premier clic dans le jeu.
|
||||||
|
window.focus();
|
||||||
|
document.body.tabIndex = -1;
|
||||||
|
document.body.addEventListener('click', function () { window.focus(); });
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Reference in New Issue
Block a user