SetChildIndex et attribut "visible" incompatibles ?
Bonjour à tous,
Je travaille sur une galerie ou des miniatures s'affichent avec Tween. Pas de soucis. Mais comme le chargement était un peu long j'ai voulu mettre un preloader. Soucis ;)
Je galère trop à comprendre le fonctionnement des preloader, alors je l'ai fais un peu à ma sauce. L'idée est d'afficher un clip noir couvrant la scène avec un texte "chargement" dessus tant que les images ne sont pas loadées et de le virer à la fin...
Donc en gros au début je fais un loader.visible=true puis un setChildIndex(preload,1) pour qu'il passe sur les photos. Tout roule, mais après quand je lui dis preload.visible=false il ne veut plus disparaitre !!
Mon code tout bien commenté :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
|
import flash.filters.ColorMatrixFilter;
import flash.utils.describeType;
import com.tweenman.TweenMan;
var prev_img:uint=0;
var GrandeImage:Loader = new Loader();
setChildIndex(preload,1);
// Chargement du fichier XML contenant les chemins des photos
var chargementXML:URLLoader = new URLLoader();// objet de chargement
var fichier:URLRequest = new URLRequest("xml/abstractions.xml");// url du fichier chargé
chargementXML.addEventListener(Event.COMPLETE, chargementComplet);
chargementXML.addEventListener(IOErrorEvent.IO_ERROR, error);
chargementXML.load( fichier );
var posx:uint = 0; // position de la miniature à afficher
var posy:uint = 0;
var i:uint = 0; // Boucle de chargement des images
var Ar:Array = new Array();
Ar["Conteneur"] = new Sprite();
addChild(Ar["Conteneur"]);
function error (event:IOErrorEvent):void
{
trace (String(event));
}
// chargement terminé du fichier xml
function chargementComplet(pEvt:Event):void
{
// on récupère notre xml
var ImagesPath:XML = new XML( pEvt.target.data );//la classe XML est une classe native de Flash, on la trouve dans le package Top Level.
var photos:XMLList = ImagesPath.elements(); //le document XML est constitué d'une liste d'éléments XML, en l'occurence ici, une liste de photos
var nb_photos=photos.length();
for each(var chemin:XML in photos)//pour chaque noeud enfants dans la liste des photos
{
if (posy < 400)
{
try {
var url:String = chemin.mini
Ar[i] = new Loader()
Ar[i].load(new URLRequest(url));
Ar[i].x=posx;
Ar[i].y=posy;
Ar[i].alpha = 0;
Ar["Conteneur"].addChild(Ar[i]);
}
catch (e:Error) {
trace(e);
}
finally {
posx = posx + 43;
if (posx > 170)
{
posy = posy + 43;
posx=0;
}
Ar[i].addEventListener(MouseEvent.CLICK, clic_image);
Ar[i].addEventListener(MouseEvent.ROLL_OVER, survol_image);
}
}
if (i == nb_photos-1){PreLoadOK();}
i++;
}
}
function clic_image(evt:MouseEvent) {
evt.target.alpha = 0;
TweenMan.addTween(evt.target, { time: 1, alpha: 1 });
var index:int = -1;
for (var i:int = 0; i < Ar.length; i++) {
if (Ar[i] == evt.target) {
index = i;
break;
}
}
trouve_image (index+1);
}
function survol_image(evt:MouseEvent) {
evt.target.alpha = 0;
TweenMan.addTween(evt.target, { time: 1, alpha: 1 });
}
function PreLoadOK()
{
for (var j:uint=0; j<i; j++)
{
TweenMan.addTween(Ar[j], { time: 1, alpha: 1 });
if (j==21){preload.visible=false;}
}
}
function trouve_image (img:uint)
{
GrandeImage.unload();
var GImg:URLRequest = new URLRequest("abstractions/grandes/abstractions" + img + ".jpg");
GrandeImage.x=-584;
GrandeImage.y=4;
GrandeImage.alpha = 0;
GrandeImage.load(GImg);
addChild(GrandeImage);
TweenMan.addTween(GrandeImage, { time: 1, alpha: 1 });
}
// Image d'accueil :
var GImgAcc:URLRequest = new URLRequest("abstractions/grandes/abstractions1.jpg");
GrandeImage.x=-584;
GrandeImage.y=4;
GrandeImage.load(GImgAcc);
GrandeImage.alpha=0;
addChild(GrandeImage);
TweenMan.addTween(GrandeImage, { time: 1, alpha: 1 });
stop(); |