DuplicateMovieClip et chargement dynamique d'image
Bonjour,
Je souhaite créer un jeu de taquin mais sans utiliser les librairies déjà existantes, donc de A à Z.
Voilà le principe de base :
Une image est chargée depuis une URL puis découpée dynamiquement en cases qui seront aléatoirement dispersées dans la scène.
Voilà l'ordre que je veux faire :
- Charger l'image dans un movieClip
- Dupliquer le movieClip pour chacune des cases dont j'ai besoin
- Pour chaque nouveau movieClip (nommé 'Case' + i + j, i et j étant les coordonnées de la case), :
¤ placer un masque de la taille d'une case
¤ positionner et redimensionner le masque
¤ positionner le nouveau movieClip (Case + i + j) aléatoirement
Seulement voilà le problème, mes duplicateMovieClip ne fonctionnent pas :( me voilà bien avancé pour la suite ^^.
Ici, le trace me balance des undefined à gogo ^^
Voici mon code :
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
| stop();
var width:Number = 600;
var height:Number = 400;
var background_picture:String;
var xml_url:String = "http://localhost/******/external_ressources/images.xml";
var xmlDoc= new XML();
var nbLignes:Number = 6;
var nbColonnes:Number = 6;
xmlDoc.ignoreWhite = true;
MovieClip.prototype.loadFile = function(file) {
conteneur = this.createEmptyMovieClip("conteneur", 100);
pic = conteneur.createEmptyMovieClip("img", 102);
crt = conteneur.createEmptyMovieClip("control", 103);
ldr = conteneur.attachMovie("loader", "loader", 104, {_xscale:100, _yscale:100, _x:-83, _y:0});
ldr.bar._xscale = 0;
pic.loadMovie(file);
crt.onEnterFrame = function() {
pic._visible = false;
transfert = Math.round(pic.getBytesLoaded()*100/pic.getBytesTotal());
ldr.bar._xscale = transfert;
if (pic.getBytesTotal()>4) {
if (pic.getBytesLoaded() == pic.getBytesTotal()) {
delete crt.onEnterFrame;
removeMovieClip(ldr);
pic._visible = true;
pic._xscale = width * 100 / pic._width;
pic._yscale = height * 100 / pic._height;
pic._x = - pic._width/2;
pic._y = - pic._height/2;
for(var i = 1 ; i <= nbColonnes ; i++){
for(var j = 1 ; j <= nbLignes ; j++){
conteneur.duplicateMovieClip(pic,"case" + i + j, 105 + (j-1) * nbColumns + i);
trace(conteneur['case'+i+j]._x);
}
}
}
}
};
};
xmlDoc.onLoad = function(){
background_picture = this.firstChild.childNodes[1].attributes.url;
bg_center.loadFile(background_picture);
};
xmlDoc.load(xml_url); |
nb: la seule frame de mon animation contient un movieClip 'bg_center' placé au centre.