Une démo à tester ici avec un seul doigt (regardez le code source de la
page) :
http://www.quirksmode.org/m/tests/drag.html

Une démo pour les interfaces supportant 2 ou 3 doigts (regardez aussi le
code source) :
http://www.quirksmode.org/m/tests/drag2.html
(si votre surface tactile ne support qu'une seule position vous ne pourrez
trainer qu'un seul des carrés en même temp ; utile pour les jeux
multijoueurs où on joue sur le même écran, mais c'est ce qui permet aussi
le zoom et la rotation à deux doigts)

Le truc clé c'est l'évènement "ontouchstart" qui peut se déclencher une ou
plusieurs fois lors d'une touche sur un ou plusieurs objet, chaque touche
ayant son propre suivi avec "ontouchmove" et "ontouchend". Ils se
distinguent de "onmousedown", "onmousemove" et "onmouseup".

Sous IE et Firefox cependant, la première touche déclenche à la fois les
évènements "onmouse*" et "ontouch*" sur un même objet eventlistener (ces
listeners sont créés par duplication d'un même objet initial sur les
navigateurs qui supportent le "multitouch", autant de fois que l'OS peut
les distinguer) de sorte que la souris est équivalente à la première
touche. Mais Chrome ne fait plus cette fusion par défaut entre la souris et
la première touche tactile, Chrome donne donc une touche en plus (en
utilisant les doigts et la souris pour des touches distinctes, donc avec
mon écran à deux touches plus la souris, je gère 3 touches en tout sous
Chrome, mais 2 seulement sous IE et Firefox...).

Le 12 janvier 2013 16:59, Philippe Verdy <verd...@wanadoo.fr> a écrit :

> Du coup j'ai rétabli l'option par défaut (qui est maintenant activée de
> façon automatique sur un PC disposant d'une interface "multitouch". Et là
> pour glisser la carte je glisse le doigt sur l'écran, pour zoomer je fais
> une double tape ou j'utilise le zoom en glissant et rapprochant ou
> éloignant deux doigts comme sur une tablette ou un smartphone.
>
> La souris reste à part (déplacements, trainer un objet, ici une tuile,
> vers le bureau ou un nouvel onglet en tant qu'URL, les clics ne réagissent
> plus sur la carte mais fonctionnent dans les  zones de saisie et pour
> trainer les ascenseurs des barres de défilement de la même façon qu'avec le
> doigt sur l'écran).
>
> Sur un site de démo des touch events, je peux aussi faire des rotations de
> photos. Sur Yourtube je peux zoomer un morceau d'une vidéo....
>
> Mais sur le site OSM je ne vois pas l'intérêt de distinguer dans le
> javascript la souris et l'interface tactile qui devraient réagir de la même
> façon, ce n'est pas un jeu !
>
> Le 12 janvier 2013 16:46, Philippe Verdy <verd...@wanadoo.fr> a écrit :
>
> Par curiosité j'ai aussi essayé Chrome dans sa version "Canary build" (qui
>> s'installe séparément) :
>> Version 26.0.1381.0 canary
>> Elle non plus ne fonctionne pas sous www.openstreetmap.org, la carte ne
>> glisse toujours pas en cliquant-trainant la souris (cela veut déplacer
>> l'image d'une tuile), et la molette de fait pas de zoom.
>>
>> Par hasard j'ai cherché parmi les flags avancés de Chrome (sur la page
>> avancée "about:flags") et j'en ai trouvé un qui est activé par défaut :
>>
>>
>> ****Enable touch events**** (Mac, Windows, Linux, Chrome OS)
>>     Force touchscreen support to always be enabled or disabled, or to be
>> enabled when a touchscreen is detected on startup (Automatic, the default).
>>     [Automatique] (choix par défaut, les autres options sont "Activé" ou
>> "Désactivé".
>>
>>
>> Il se trouve que mon écran dispose d'une surface tactile justement !!!
>> (avec une connexion USB détectée par Windows comme un stylet ou une
>> tablette tactile standard). Dans ce cas si je désactive cette option, la
>> Slippy Map fonctionne bien à la souris (mais pas avec le doigt sur l'écran
>> tactile). Je n'avais tout bonnement pas essayé de déplacer la carte avec le
>> doigt sur l'écran !
>>
>> Ensuite j'ai réactivé cette option par défaut, et la souris ne fonctionne
>> plus. En revanche la Slippy Map fonctionne cette fois... mais avec le doigt
>> sur l'écran !
>>
>> Bref pour que ça fonctionne sous Chrome, il faut :
>> - soit débrancher le cable USB qui relie mon écran au PC pour son
>> interface tactile (pour n'utiliser que la souris).
>> - soit désactiver cette option de Chrome (et utiliser alors uniquement la
>> souris). Sous IE et Firefox, les deux périphériques souris et surface
>> tactile sont vus comme un seul, et ne sont pas distingués.
>> Dans le framework utilisé sur layers.openstreetmap.org, peu importe le
>> périphérique utilisé ils sont utilisés de la même façon.
>>
>> Les "*touch events*" sont une nouveauté de Chrome (qui n'existe pas
>> encore sous IE ou Firefox), ils permettent de distinguer plusieurs
>> périphériques à l'origine des évènements de molette ou de glisser-trainer
>> et déplacements). Le javascript utilisé dans le framework sur
>> www.openstreetmap.org ne gère pas cela correctement ou ne gère QUE le
>> premier périphérique par défaut (pas le second).
>> On n'a pas le même framework pour la SlippyMap de
>> layers.openstreetmap.org qui génèrent la même action quelque soit le
>> périphérique utilisé.
>>
>> La conséquence du support des "touch events" sous Chrome est qu'il va
>> permettre d'utiliser sur les sites web plusieurs "souris" pour des actions
>> différentes : la surface tactile de l'écran, un touchpad, une souris
>> externe, un trackball, voire aussi un joystick ou un bouton de manette de
>> jeux, ou des manettes de jeux comportant plus de capteurs directionnels
>> utilisables dans les jeux en ligne.
>>
>>
>
_______________________________________________
Talk-fr mailing list
Talk-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-fr

Répondre à