Willpower - J'ai tester ton code. Je suis en train d'essayer de le comprendre... et je te dirai...;)
NoSmoking : Si je comprend bien ton code, tu remplace mes object image() par autant d'object div... nn? un div est moins gourmand qu'une image()?
Version imprimable
Willpower - J'ai tester ton code. Je suis en train d'essayer de le comprendre... et je te dirai...;)
NoSmoking : Si je comprend bien ton code, tu remplace mes object image() par autant d'object div... nn? un div est moins gourmand qu'une image()?
Toujours en train de tester ta méthode Willpower. Merci pour les commentaires.
Par contre, comme mes textures sont en biais avec une zone transparente, j'essaye de décaler les background mais ....
Mon moteur est en 2d isométrique...
test
Impossible de modifier le background, (enfin pour ce que tu veux faire), la solution est de créer des images modifiées comme ceci :
http://www.hommk.net/img.png
Qui misent côte à côte te donnent le bon résultat :
http://www.hommk.net/test.htm
http://www.hommk.net/JEU/
merci, c'est bien ce que je pensais.
Je garde ta solution pour le cas où je ne change pas beaucoup de textures au final.
On verra, mais ta méthode est la plus rapide. Merci encore.
ce qui est fortement moins gourmand et de jouer sur le CSS en non sur le DOM, il est plus rapide de modifier la class d'un élément que les valeurs de ses propriétés, en code et en redraw du navigateur.Citation:
Envoyé par Darkyl
Ceci étant, je viens de reprendre la discussion que j'avais lue en diagonale, ton soucis est plus un soucis de méthode optimum à appliquer.
Si la "map" de fond ne te sert que de "quadrillage coloré" il est effectivement plus judicieux de mettre une image en background de la DIV, comme l'a suggéré Willpower.
dans ce cas tu n'aurais pas de chance, mais dans tout les autres cas tu resteras gagnant à ne modifier que ce qui doit être changer.Citation:
Envoyé par Darkyl
Qui plus est lors d'un rajout d'un étang tu peux encapsuler les losanges dans une DIV qui lors d'un déplacement sera la seule à déplacer.
Tu te retrouveras avec un empilage de niveau et sur chacun d'entre eux tu pourras mettre un écouteur personnalisé.
On rejoint un autre point souligné par Willpower, qui est de mettre un écouteur sur la "map" plutôt que sur chaque élément, la position sur le quadrillage étant somme toute facile à récupérer, il s'agit d'une simple équation du type y=ax. Si une couche intermédiaire récupère un événement tu le traites et tu stoppes la propagation.
Sûrement oublié des petites choses mais ...
NoSmoking : Oui, tu as raison, mon soucis est plus du point de vue de l'archi optimal à mettre en place, que d'optimisation d'une tache en particulière.
Je viens de m'en rendre compte car:
- je veux mettre des textures (par exemple une zone cultivable), hors l'image de cette zone peut être plus grande qu'une case (par exemple les tiges des herbes dépassent le haut de la case). Si je gère ces ressources primaires comme des textures, c'est pas bon, car si je veux une ressource qui fasse deux cases... pas possible, de plus, je dois impérativement gardé une image de fond sur chaque case (même rempli par un batiment) car sinon au survol de la souris, le temps de changer l'image du batiment, j'ai un léger blanc ou décalage de l'image de texture (que je viens remettre) enfin bref, comme tu vois c'est la ....:cry:
Donc, je repense l'archi et j'en viens à faire:
- une ressource primaire (bois, herbe cultivable, gisement de fer ...) sera le plus simple objet géré par mon moteur graphique. Cet objet sera en realité, un objet général (x,y,zindex,src,width,height) ->prototypé dans tous les objets construits
et un objet relatif au type construit, ici un objet ressource_primaire...
Voili, donc je repense à tous ça... Je pense qu'effectivement je vais faire la méthode du backround de Willpower au final pour le fond de mes cases.
Concernant le déplacement, je garde le scroll invisible de mon body. Donc toute la map sera créé en entière. Par contre, je testerai avant de changer une src d'une image case et de déplacer un perso, que ceux-ci soient bien dans la zone visible... Pour pas faire des choses pour rien.
Concernant les écoutes, je fais déjà un mouseover sur la map et non sur les cases. De plus l'écoute sur la map ne se fera quand mode édition, mode construction (au survol donc), sinon, en mode normale, il n'y aura qu'une écoute en onclick sur la map donc rien de gourmand en temps réel.
Je galère là avec des cours de classes javascript puis surtout, voulant rendre les ajouts de type de batiment facilement faisable, je confond bien souvent le constructeur d'un type (par ex maison) avec celui de sa possible déclinaison en objet (par ex maison 1)...
C'est de la lobotomisation en directe.
merci de ta réponse, je continu ma prospection... merci encore
N'empêche faut être barge pour faire un jeu composé de cases de forme non carré !!
Petite version hexagonale : http://www.hommk.net/JEU/
:mrgreen:
lol :ccool:
mes cases sont carrées, elles font même 30*30 mais en 3d isométrique alors pffff...
C'est vrai que ça complique pas mal le truc, enfin juste une fonction coord_3d_iso_to_2d pour transformer ma position souris dans le body en position souris dans la map...
J'y penserai pour la prochaine fois....A faire des cases carrées comme à l'armée :aie:
re,
Voilà une version de base (avec toujours la vieille méthode d'affichage de fond) mais à part cela, c'est optimisé.
lien
Je n'ai fait que survoler ce thread (intéressant, d'ailleurs :)), mais je voulais juste souligner en passant l'existence de YSlow (surcouche de Firebug) pour profiler le code JS et savoir "là où ça coince" en terme de performance.
Mais bon, vous avez l'air d'avoir déjà bien avancé, ce n'est peut-être plus très utile... disons que c'est juste au cas où. ^^
Je ne connais pas YSlow, je vais y jeter un coup d'oeil, c'est toujours bon à prendre. Merci.
J'ai fini la fonction de survol de la map et de construction de batiment.
Voici le lien.
lien
Si on clique sur un bâtiment à construire (de préf, production -> hutte de bucheron) et que l'on se ballade sur la map, la vérif des cases marchent bien mais firefox est toujours aussi lents, notamment quand on survol les herbes fertiles (prés de la rivière).
Chrome marche trés bien (l'accés au dom, $('#terrefertile_n').hide()) est toujours aussi lent sous firefox.
Si vous pouviez tester pour voir si cela vient pas que de chez moi...
chez moi firefox plante au chargement de la page ;-)
Ha bon...
Désolé, j'espère que tu n'as pas dû tout fermer...:(
Bizarre... Chez moi, firefox (v 12) marche bien, juste un peu lent.
C'est peut-être le surchargement du DOM avec mes n*m image() de fond...
Et tu as testé sous chrome par hazard? :mrgreen:
Oui je suis sous chrome (par défaut) et ça va bien.
J'ai ouvert sous firefox juste pour voir et ça plante ... ça ne charge pas les images de fond.. et firefox ne répond pas. (j'ai testé sur un vieux pc et sur mon pc plus récent avec firefox 12 et même résultat.) :?
Merci d'avoir pris le temps...:ccool:
Bon, je re-recommence tout, cette fois-ci en appliquant ta méthode pour le fond... et déjà elle est pas compatible IE...
Je commence à en avoir marre, même les style css sont mal géré par IE... ca craint.
test
note pour les wrap(zones pour cacher les cotés et les rendre oblique), je m'étais amusé pour le fun de les créer en css, pour ceux-ci une image des qqes pixels étirée à la bonne taille est peut-être plus adaptée. :ccool:
merci pour l'edit...
Heu, cela fait tout moche une petite image étirée à la bonne taille, mais je pense avoir trouvé une bonne solution.
Je tiens o jus.
MERCI (;))
nouvelle version (avec ta méthode) :
lien
Cette fois-ci, je crois que c'est la bonne.
Juste une ptite qust:
Comment laisser passer un évènement? sans l’arrêter...