enchant.js - 7e partie
Rédigé par Fred - - aucun commentaire
Il existe plusieurs plugins pour enchantjs dont certains ont été
intégrés directement dans enchant.js. Par exemple avatar, ui,
box2d, gl, timeline…
Il existe plusieurs plugins pour enchantjs dont certains ont été
intégrés directement dans enchant.js. Par exemple avatar, ui,
box2d, gl, timeline…
On va maintenant voir l’objet Map pour comprendre les deux exemples
expert qui nous reste à voir : Action et RPG.
Une des dernières choses que l’on va voir pour les sprites, c’est la
détection de collisions. Il existe deux méthodes qui font ça :
intersect et within.
Enfin, on va pouvoir faire des jeux interactifs ! On va continuer de voir un peu des choses sur les sprites mais surtout, on va voir les événements utiles à la souris et au clavier.
Pour cette partie, on va voir quelque chose d’un peu plus concret, la
classe Sprite.
Voyons maintenant les Scene d’un peu plus près. Encore une fois,
récupérez les exemples ici pour ne pas avoir à recopier.
Première partie des tutoriels enchantjs. On commence donc tout doucement avec quelques propriétés de l’objet Game.
Je cherchais un framework javascript pour faire quelques mini-jeux 2D. La liste étant plutôt longue, j’en ai pris un un peu au hasard. J’avais besoin de quelque chose de léger et super basique. Je me suis tourné vers enchant.js. Je me suis rendu compte qu’il semble malheureusement être laissé à l’abandon depuis à peu près un an (si on s’en réfère au site et à github), mais comme le but n’est pas de développer des jeux très complexes avec webGL etc., mais plus de se (re)faire la main avec javascript, c’est bien suffisant.
J’avais déjà vu passer l’info, sur irreal.org puis chez Sacha Chua, et ailleurs encore, et à chaque fois, je m’étais dit, faut que je m’y mette. C'est chose faite depuis quelques temps. org-protocol permet d’utiliser org-capture depuis firefox, chrome, acrobat reader, etc.
Ce qui m’intéresse, c’est d’utiliser les bookmarklets de firefox, et
plus particulièrement les mots-clés des marque-pages : je tape dans la
barre d’adresse ot, or ou on, et ça me rajoute une note au bon
endroit dans le bon fichier org-mode.
Je note ici comment j’ai fait. Selon que vous utilisiez windows, ou GNU/Linux, c’est légèrement différent.
Dans le dossier bin d’emacs, j'ai ajouté le fichier em.cmd
contenant :
@echo off "%~dp0emacsclientw.exe" -na "%~dp0runemacs.exe" -c "%1"
Dans le fichier d’initialisation, init.el, il faut :
;; pour emacs client (server-start) ;;; où se situe org-protocol (add-to-list 'load-path "c:/Users/ftantini/AppData/Roaming/.emacs.d/elpa/org-20150622/") (require 'org-protocol) ;;; un template (setq org-protocol-default-template-key "l") (setq org-capture-templates '(("l" "Link" entry (file+olp "C:\\Users\\ftantini\\Documents\\Divers\\orgnotes.org" "Web Links") "* %a\n %?\n %i")))
Si on veut plusieurs bookmarks :
(setq org-protocol-default-template-key "l") (setq org-capture-templates '(("t" "Todo" entry (file+headline "C:\\Users\\ftantini\\Documents\\Divers\\orgnotes.org" "Tasks") "* TODO %?\n %i\n %a") ("l" "Link" entry (file+olp "C:\\Users\\ftantini\\Documents\\Divers\\orgnotes.org" "Web Links") "* %a\n %?\n %i") ("j" "Journal" entry (file+datetree "C:\\Users\\ftantini\\Documents\\Divers\\orgnotes.org") "* %?\nEntered on %U\n %i\n %a")))
Attention, il a fallu que Web Links soit déjà un header du fichier.
Enfin, il faut également modifier le registre :
REGEDIT4 [HKEY_CLASSES_ROOT\org-protocol] "URL Protocol"="" @="URL:Org Protocol" [HKEY_CLASSES_ROOT\org-protocol\shell] [HKEY_CLASSES_ROOT\org-protocol\shell\open] [HKEY_CLASSES_ROOT\org-protocol\shell\open\command] @="\"c:\\Users\\ftantini\\Progs\\emacs-24.5\\bin\\emacsclientw.exe\" \"%1\""
Côté firefox, on ajoute le bookmarklet suivant :
javascript:location.href='org-protocol://org-capture://l/'+encodeURIComponent(location.href)+'/'+encodeURIComponent(document.title)+'/'+encodeURIComponent(window.getSelection());
où le l qui suit org-capture correspond au template qu’on veut
utiliser.
Le sous-protocole n’est, pour moi, pas capture, mais bien
org-capture (trouvé grâce à ‰C-h v org-protocol-protocol-alist-default‰ pour
voir les protocoles par défaut).
La première fois que le bookmarklet est lancé, il demande avec quoi
ouvrir, on renseigne em.cmd.
C’est très clair ici : http://tech.memoryimprintstudio.com/org-capture-from-external-applications/, les solutions 2, et 3 ont marché pour moi, je vous laisse aller voir et je recopie ce qui marche pour moi (le plugin ne permet d’utiliser qu’un template) :
org-protocol.desktop
dans ~/.local/share/applications avec :
[Desktop Entry] Name=org-protocol Exec=emacsclient -c %u Type=Application Terminal=false Categories=System; MimeType=x-scheme-handler/org-protocol;
~/.local/share/applications/mimeapps.list[Added Associations] x-scheme-handler/org-protocol=org-protocol.desktop
puis mettre à jour :
update-desktop-database ~/.local/share/applications/
(le paquet pour debian est desktop-file-utils)
Côté Emacs, dans le fichier d’initialisation, init.el, on ajoute (si ce n’est
pas déjà présent) :
;; pour emacs client (server-start) ;;; org-protocol (require 'org-protocol) (setq org-protocol-default-template-key "l") (setq org-capture-templates '(("l" "Link" entry (file+headline "/home/fred/Data/Donnees/Org/Notes/orgnotes.org" "trouvailles") "* %a\n %?\n %i")))
Et si on veut plusieurs bookmarks :
(setq org-protocol-default-template-key "l") (setq org-capture-templates '(("t" "Todo" entry (file+headline "/home/fred/Data/Donnees/Org/Notes/orgnotes.org" "Tasks") "* TODO %?\n %i\n %a") ("l" "Link" entry (file+olp "/home/fred/Data/Donnees/Org/Notes/orgnotes.org" "Web Links") "* %a\n %?\n %i") ("j" "Journal" entry (file+datetree "/home/fred/Data/Donnees/Org/Notes/orgnotes.org") "* %?\nEntered on %U\n %i\n %a")))
Comme pour windows, le header (Tasks, Web Links) doit déjà être présent.
Le bookmarklet qui va bien à ajouter dans firefox :
javascript:location.href='org-protocol://capture://l/'+encodeURIComponent(location.href)+'/'+encodeURIComponent(document.title)+'/'+encodeURIComponent(window.getSelection());
où le l qui suit org-capture correspond au template qu’on veut
utiliser.
Par contre, cette fois le sous-protocole est bien capture, et pas
org-capture, et je n’ai pas chercher à comprendre pourquoi…
(org-protocol-protocol-alist-default est pourtant le même.)
Pour tester, on peut, en ligne de commande, lancer
emacsclient org-protocol://capture://x/toto/tata/titi
si ça ne marche pas correctement, par exemple, si le buffer s’ouvre avec comme nom le dernier argument (ici titi), c’est sûrement un souci de sous-protocole.
Voilà les trois templates qui sont chez moi associés à un bookmarklet :
(setq org-capture-templates
'(("t" "notes-info/travail"
entry (file+headline "/home/fred/Data/Donnees/Org/Notes/notes-info.org" "trouvailles")
"** COMMENCÉ %:description\n%i\n%?\nSource : %a\n\n" :immediate-finish)
("r" "notes-info/raccourcis"
entry (file+headline "/home/fred/Data/Donnees/Org/Notes/notes-info.org" "raccourcis")
"** COMMENCÉ %:description\n%i\n%?\nSource : %a\n\n" :immediate-finish)
("l" "notes/à lire"
entry (file+headline "/home/fred/Data/Donnees/Org/Notes/notes.org" "à lire")
; "* %^{Title}\n\n Source: %u, %c\n\n %i"))))
"** %a\n%i\n%?\n\n" :immediate-finish)
))
;%:description : titre de la page
;%i : sélection de la page web
;%? : curseur pour continuer de remplir la note
;%a : [[lien][titre de la page]]
Je rappelle les liens de l’intro : chez Sacha Chua, qui explique
comment elle a fait pour chrome, et le site d’orgmode, en particulier,
les templates : http://orgmode.org/manual/Capture-templates.html pour
avoir d’autres variables (%T, %k, %^{Title}, %^C… sur
Template-expansion), et la page de départ :
http://orgmode.org/worg/org-contrib/org-protocol.html.
Une comparaison de générateurs de quelques sites statiques, selon les besoin de Enrico Zini : Hugo, Nikola, Pelican, Ikiwiki, siterefactor et staticsite.