x3nt0r
Messages postés6Date d'inscriptionmardi 21 octobre 2008StatutMembreDernière intervention 7 mai 2009
-
7 mai 2009 à 11:11
pegase31
Messages postés6138Date d'inscriptiondimanche 21 décembre 2003StatutModérateurDernière intervention 4 septembre 2013
-
7 mai 2009 à 15:38
Bonjour à tous ,
Je vous sollicite aujourd'hui car j'ai un soucis que je vais vous exposez maintenant :
Je suis en train d'essayer (:p) de coder un éditeur. Dans celui ci ce trouve une grille qui est contenu dans un movieclip. Cette grille est faite de 200*200 occurence dun bouton. Le problème est que, lorsque que je veux deplacer la grille pour naviguer tranquillement dans la vue, celle- ci saccade énormement.
Comment faire ? Je pense que je m'y suis mal pris.
x3nt0r
Messages postés6Date d'inscriptionmardi 21 octobre 2008StatutMembreDernière intervention 7 mai 2009 7 mai 2009 à 11:27
Merci Girou pour ta rapidité !
Alors je précise que c'est de l'AS3.
Mon éditeur de niveau, est constituer d'une 2D view, ou l'on va pouvoir positionner les éléments d'une bibliothèque.
La 2D view est donc divisé en carré qui sont des bouton. Le but étant de positionné les élement de la bibliothèque dans ces carré our facilité la constitution du level.
Je ne voyais pas comment faire autrement pour positionné les élément sur une grille. J'ai donc décider de constituer la grille de bouton.
cs_Girou
Messages postés1203Date d'inscriptionlundi 10 mars 2003StatutMembreDernière intervention23 juillet 20092 7 mai 2009 à 11:45
OK, c'est bien ce que je me disais...
tu devrais plutôt avoir une 'grille virtuelle' dans un tableau a 2 dimension (Array).
lorsque la souris clique sur ton editeur, tu récupères les coordonnées x et y de la souris, tu en déduit la case concernée et tu y places un élément de la biblioteque
Exemple grille 200 x 200
var caseSize:uint=10 (soit un editeur de 2000 x 2000 pixels)la souris click sur x:153 et y:72 il s'agit de la case x:Math.round(153/caseSize) 15 / y:Math.round(72/caseSize) 7
tu y places un élément de ta bibliotheque (element ID= 4)
-> dans ta grille virtuelle Niveau[15][7]=4
-> sur ton éditeur tu attaches le displayObject (element ID4) en x 15*caseSize et y 7*caseSize
pegase31
Messages postés6138Date d'inscriptiondimanche 21 décembre 2003StatutModérateurDernière intervention 4 septembre 201312 7 mai 2009 à 14:00
pour les grilles à 2 dimensions contenant sous le même type de variable, je préconise le Vector et non l'Array .. et s'il s'agit de types int, le meilleur reste encore le ByteArray !
x3nt0r
Messages postés6Date d'inscriptionmardi 21 octobre 2008StatutMembreDernière intervention 7 mai 2009 7 mai 2009 à 15:05
Bon j'avoue être assez paumé -_- ,
J'arrive a générer mon tableau mais comment le faire apparaitre visuellement ds ma vue 2D sous forme de grille, et pouvoir la faire scroll. Je rappel qu'il faut que ma grille fasse 200*200 cases de 50pix de coté
J'ai bcp de mal avec l'abstrait ou le virtuelle et je manipule mal les choses lorsqu'elles ne sont pas matérialisées :(
J'ai pas CS4 donc j'utiliserai plutot le ByteArray d'après Peg.
pegase31
Messages postés6138Date d'inscriptiondimanche 21 décembre 2003StatutModérateurDernière intervention 4 septembre 201312 7 mai 2009 à 15:26
je vais te donner LA solution la plus simple (celle que j'utilise). Je vais être bref et concis car peu de temps à t'accorder, mais tu auras les grandes lignes :
- Tu dois bosser avec 2 éléments, le physique (les cases sur ton écran) et le logique (ton byteArray, dans le cas présent). Le physique afiche et réceptionne les actions (une interface) et le logique ne contiens que les données crées/modifiées.
La Partie Logique :
- La longueur du tableau (ByteArray) = largeur x hauteur de ta grille de cases
- index de case dans le tableau = X + (largeur * Y)
-Tu dois simplement faire des fonction de lecture/modifications de données sur une seule case (du tableau et donc de bloc) en lui donnant le X et Y à modifier et à le convertir avec les formules citées ci-dessus
La Partie Physique :
- Nul besoin de faire une super grille de milliers de boutons, seul le curseur de ta souris suffit à savoir où tu te trouves : [X ou Y] de la case = Arrondis de (souris[X ou Y] / [largeur ou Hauteur] de la case en pixels)
- Si tu veux faire un niveau à scrolling (taille de grille plus grande que celle affichable à l'écran) tu dois ajouter un point de référence de décallage de l'affichage et l'ajouter à chaque édition. Mais c'est plus complexe ...
- L'affichage des modifications est simple à faire sur un bitmap, mais attention au poids final en mémoire .. et encore une fois ça dépend de si tu as un scrolling ou pas ...
Voili, c'est abstrait, mais tu as les formules de base et la méthode globale.