JeuWeb - Crée ton jeu par navigateur
Propagation d'événements - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Propagation d'événements (/showthread.php?tid=4809)

Pages : 1 2 3


RE: Propagation d'événements - Sephi-Chan - 10-05-2010

Ça y est, ça fonctionne sur Firefox. C'était lié à ma fonction log().

J'avais :


function log(something){
console && console.log(something);
}

J'ai remplacé par :


function log(something){
if(console) console.log(something);
}

Bon, ça ne règle pas mon bubbling. :p


Sephi-Chan


RE: Propagation d'événements - Anthor - 10-05-2010

Ça ne devrait pas arriver, si tu met le target dans les deux fonctions à priori.


RE: Propagation d'événements - Sephi-Chan - 10-05-2010

Je me suis donc servi de la proposition d'Anthor pour résoudre mon problème. Voilà ce que ça donne :


$('.territory').bind('click', function(event){

if(!$(event.target).is('.interaction-mark')){
$.ajax({
url: $(this).attr('data-territory-url') + '.js',
type: 'GET',
dataType: 'script'
});
}
});


$('.interaction-mark').live('click', function(event){
log("Interaction mark clicked!");
});

En revanche, je dois reconnaître que je suis un peu déçu. J'aurais trouvé plus élégant d'empêcher la remontée de l'événement.

Merci bien ! Smile


Sephi-Chan


RE: Propagation d'événements - Anthor - 11-05-2010

Tu peux essayer avec stopImmediatePropagation, et en mettant la deuxième fonction avant la première.


RE: Propagation d'événements - Argorate - 11-05-2010

Roh, j'ai même pas eut le temps de voir quand ça marchais que c'est déjà fermer Sad


RE: Propagation d'événements - Roworll - 11-05-2010

Bah moi j'ai testé sur FF/IE hier et je n'ai rien vu.
Enfin si, juste une carte sans aucune interaction.


RE: Propagation d'événements - Sephi-Chan - 11-05-2010

Héhé, il n'y avait rien à voir de particulier. Smile

Quand on cliquait sur un territoire, ça affiche un carré à chaque frontière. Si le pays frontalier est allié, le carré est vert, sinon il est rouge. Ces carrés seront remplacés par des flèches, à terme. J'ai appelé ça des marques d'interaction, elles sont cliquables.

Lorsqu'on les cliquera, elles auront différents comportement (selon leur couleur) : si je possède la France et l'Allemagne, je clique sur la France, ça m'affiche un carré vert à la frontière Allemande et des carrés rouges sur les frontières Belge, Suisse, Italienne et Espagnole.

En cliquant sur un carré vert, j'interagis avec un territoire allié : ça va consister à afficher les bêtes de la France d'un côté, celles de l'Allemagne de l'autre, et de permettre de déplacer des bêtes de l'un à l'autre.

Par contre, j'ai encore le problème du choix de la technologie d'affichage de la carte pour une compatibilité avec la dernière version de chaque navigateur récent.


Sephi-Chan


RE: Propagation d'événements - Roworll - 11-05-2010

(11-05-2010, 10:19 AM)Sephi-Chan a écrit : Par contre, j'ai encore le problème du choix de la technologie d'affichage de la carte pour une compatibilité avec la dernière version de chaque navigateur récent.

Tout pareil.
Je suis désespéré par le manque de support et la qualité de rendu du SVG sur les derniers navigateurs. Seul Opera tire largement son épingle du jeu avec un excellent support SVG et SMIL. Les autres sont carrément à la traîne (FF/IE) ou salement buggés (Webkit/Chrome).

Reste les bibliothèques alternatives comme raphaelJS ou SVGWeb.
La première est correcte mais certaines fonctionnalités peuvent venir à manquer.
La 2e est en développement. Ça avance assez vite mais impossible de se baser dessus pour le moment tant qu'elle n'a pas atteint une version stable hors bêta.

Je trouve tout de même ça sidérant d'en arriver à faire des bibliothèques JS pour simuler la support SVG alors que c'est un les spécifications W3C existent depuis 2001 pour la version 1.0 (2003 pour 1.1 et 2008 pour 1.2 Tiny).

Maintenant, tout le monde se jette sut HTML5 et le canvas JS et au final, je me demande quand nous auront enfin un support complet et fiable pour l'une ou l'autre des solutions permettant de faire des interfaces graphiques viables sans avoir recours à Flash/Silverlight.


RE: Propagation d'événements - Sephi-Chan - 11-05-2010

A l'heure actuel, canvas est sans doute le meilleur choix puisqu'il est bien supporté et/ou émulé sur IE.
Mais je dois avouer que ça m'emmerde un peu. Big Grin


Sephi-Chan


RE: Propagation d'événements - Roworll - 11-05-2010

Disons aussi que la création de la balise Canvas est une aberration au départ, créé pour Safari pour palier de manière à pallier au support défaillant du SVG par le navigateur.

Techniquement, canvas n'est qu'une simple toile pour dessiner des objets. La où le SVG se base sur un DOM et ou chaque objet a une existence propre et des attributs pouvant être modifiés en direct, une animation réalisée sous canvas nécessite d'effacer la surface et de tout retracer à chaque fois. Sidérant.

Dernier détail, Canvas est à la base un format propriétaire développé par Apple qui a plus ou moins tenté de placer une licence dessus avant que le W3C ne finisse par s'en emparer (et encore, ce n'est pas très clair à l'heure actuelle).

On voit alors d'un autre œil les pamphlets lancés par Steve Jobs contre Adobe et Flash. Pour ma part, j'ai comme l'impression qu'avec le HTML5 et les balises médias qui laissent au développeurs de navigateurs le choix de choisir les codecs utilisés pour la restitution de contenu audiovisuel, la guerre des licences se profile à l'horizon. J'espère juste que les développeurs et les utilisateurs n'auront pas à en pâtir.