|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre régulier
![]() Inscription : décembre 2006 Messages : 493 ![]() |
Bonjour. Est-il possible dans Flash de rafraichir une animation à un instant donné ? Je m'explique. Sur ma scène j'ai un clip, dans lequel je charge par défaut x images externes (façon damier positionné en nLigne et nColonne) qui sont localisées dans un dossier en relation avec une variable de la scène :
Code :
Code :
Suis-je assez clair ? Merci d'avance. |
||||
|
|
00
|
|
|
#2 |
![]() ![]() Développeur informatique Inscription : octobre 2006 Messages : 1 606 ![]() |
Salut,
tu peux simplement créer un clip conteneur vide qui contiendra tout les conteneurs de tes images. lorsque tu veux ensuite 'rafraichir' supprime le à l'aide de removeMovieClip puis relance le chargement. |
|
|
00
|
|
|
#3 |
|
Membre régulier
![]() Inscription : décembre 2006 Messages : 493 ![]() |
salut, le truc c'est qu'il faut que lorsque l'indice change, les images se rechargent mais pas qu'elles disparaissent toutes pour se recharger ensuite. J'aimerai que le traitement se fasse image par image, tu vois ce que je veux dire ? De plus, chaque image est externe et chargée dans un clip qui lui même est chargé façon attachMovie dans un clip de départ
ClipGlobal > ClipConteneur_1 > image_1 ClipGlobal > ClipConteneur_2 > image_2 ClipGlobal > ClipConteneur_3 > image_3 ... C'est pas évident à expliquer !! |
|
|
00
|
|
|
#4 |
![]() ![]() Développeur informatique Inscription : octobre 2006 Messages : 1 606 ![]() |
j'avoue,
c'est pas non plus évident à comprendre. essaye de décrire le fonctionnement global que tu voudrai avoir. |
|
|
00
|
|
|
#5 | ||||||
|
Membre régulier
![]() Inscription : décembre 2006 Messages : 493 ![]() |
Alors l'idée c'est d'afficher une image (genre photo aérienne) de trés trés bonne qualité et donc trés trés lourde, et de pouvoir zoomer dessus. Pour ça, elle est découpée en dalles de x ligne et x colonne, afin de charger de façon dynamique uniquement la partie de l'image qui est visible sur la scène. Ce qui permet aussi (en théorie, pas encore en pratique) lors des seuils de zoom de remplacer la dalle de l'image chargée par une autre de meilleure qualité pour que ce ne soit pas moche au zoom. Alors, une démonstration sera plus parlante qu'autre chose, je cherche à faire cet effet là : http://supratlas.geogarage.com/fs.html.
Donc voici maintenant comment je m'y suis pris. Prêt, c'est parti ... ETAPE 1 : J'ai sur ma scène un clip qui va me servir de conteneur pour toutes les dalles. C'est le clip DalleConteneur. Je détermine le nombre de dalles d'images à charger pour constituer l'image globale, soit x lignes et x colonnes, et j'attache x fois un sous-conteneur vide qui plus tard accueillera les images. Si je ne m'abuse cette étape c'est d'ailleurs toi qui m'a aidé à la réaliser. La variable tailleDalle détermine la taille du conteneur vide, je l'ai mise en globale car apparemment ça ne fonctionnait pas autrement. Ce code est sur un calque sur la scène principale : Code :
1) afficheDalle -> je le définis par défaut sur 0 et il passe à 1 quand je clique sur un checkbox "afficher l'image", 2) loadDalle -> par défaut à 0 il passe à 1 lorsque la fonction est faite une première fois, pour éviter que ça charge indéfiniment l'image, 3) this.hitTest -> si la dalle touche le masque on charge le tout. Tu vois aussi que l'image qui est chargée sera l'image en x ligne et x colonne, et dans un répertoire zx ou x correspond au zoom d'affichage par défaut à 0. Code :
Code :
|
||||||
|
|
00
|
|
|
#6 |
![]() ![]() Développeur informatique Inscription : octobre 2006 Messages : 1 606 ![]() |
Salut
plutôt sympa comme animation ! et déjà merci pour toutes ces explications. je pense qu'arriver au résultat de la carte Google de ton lien soit au dessus de mes compétences. Je crois bien que c'est des algorithmes très évolués. mais je vais me contenter de répondre à ton problème précis et ne pas m'étendre trop sur la façon de faire que tu as déjà choisis. donc si j'ai bien compris il faudrai que les dalles relancent le chargement de l'image si elles sont dans la zone d'affichage lorsque tu change la valeur de la variable loadDalle. - pour que ça se fasse automatiquement il faut que les dalles scrutent un changement de valeur, donc définir la fonction onEnterFrame de chaque dalle et tester la valeur. il se peut que ça surcharge un peu l'animation avec un grand nombre de dalle. une autre solution est que lorsque tu change la valeur relance aussi la fonction load de chaque dalle. j'espère avoir été compréhensible. sinon sur le fonctionnement général : l'image globale est divisée en plusieurs pour alléger l'affichage lorsque l'on zoom. mais si le zoom est au minimum (par exemple quand on voit toute la planete) il n'y a pas de différence à charger l'image entière ? (sauf peut-etre le chargement progressif des dalles) |
|
|
00
|
|
|
#7 |
|
Membre régulier
![]() Inscription : décembre 2006 Messages : 493 ![]() |
Merci à toi ! Oui j'en ai déduis également qu'il fallait que je code un onEnterFrame pour chaque dalle, mais apparemment la valeur de la variable loadDalle n'est pas détectée dans le onEnterFrame. Est-ce que ça vient de l'utilisation de la variable loadDalle en temps que variable globale ? Est-ce que ça vient du fait que chaque dalle est le clip dalle attaché sur la scène x fois ? Lorsque la variable zoomPourcentage devient > à 25 je redonne à loadDalle la valeur 0 pour que dans le onEnterFrame du clip dalle la fonction de chargement soit relancée, mais lorsque je vérifie avec un trace dans la fonction la valeur a bien changée mais du coup le clip se vide et reste vide !! Ou alors il recharge indéfiniment et donne du coup l'impression qu'il n'y a rien ... C'est un sacré bordel !
Pour ce qui est de charger à zoom 0 l'image globale, il faudrait télécharger l'équivalent de 500 Mo, c'est pour ça que j'opte pour des dalles de qualité différente en fonction des zooms ... |
|
|
00
|
|
|
#8 |
![]() ![]() Développeur informatique Inscription : octobre 2006 Messages : 1 606 ![]() |
il faut bien distinguer la variable de chaque dalle (chargée ou non) et celle globale (lancer le chargement ou non)
au passage tu peux utiliser des booléens et choisir des noms plus parlants (ex: bImageLoaded) quand tu testes la valeur de la variable globale dans le onEnterFrame utilise bien le ciblage '_global.' pour la variable du clip dalle (bImageLoaded) que tu n'utilise que dans le clip dalle lui-même il faut y accéder avec le ciblage 'this.' |
|
|
00
|
|
|
#9 | ||
|
Membre régulier
![]() Inscription : décembre 2006 Messages : 493 ![]() |
OKKKKKKKKKKKK ça y est j'ai cerné le truc ! J'ai mis 2 variables globales zoomIndice qui détecte les seuils de zoom, et affichDalle qui détecte si la couche est affichée ou pas, et dans le clip j'ai mis 2 variables relatives, loadDalle qui charge l'image si elle n'est pas chargée :
Code :
|
||
|
|
00
|
|
|
#10 | ||
|
Membre régulier
![]() Inscription : décembre 2006 Messages : 493 ![]() |
Salut, c'est encore moi ! Bon finalement il y a un soucis que je n'arrive pas à résoudre ! Au changement de la variable indiceZoom, j'ai bien mes dalles qui se rechargent, mais une seule fois, c'est à dire que lorsque la variable rechange, les dalles ne suivent pas. J'ai donc ma variable globale indiceZoom qui change de valeur comme ça :
0 à 25 % de zoom -> _global.indiceZoom == 0 25 à 50% -> 1 50 à 75% -> 2 75 à 100% -> 3 Ca c'est donc sur la scène principale. Dans chaque dalle qui est attaché il y a ce code : Code :
EDIT : ok problème résolu, en fait il fallait que je mette une variable indiceZoomDalle différente pour chaque IF, logique ... |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com