akoufen
Messages postés13Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention15 juin 2009
-
20 oct. 2007 à 23:27
akoufen
Messages postés13Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention15 juin 2009
-
25 oct. 2007 à 13:31
bonjour, bonsoir,
voila, j'aimerais savoir si qqun pouvais me renseigner sur un script qui permettrait de mélanger de facon aléatoire les coordonnées de clips?
plus précisment:
J'ai 16 clips (d'occurrence img1 à img16) qui sont des carrés de 100x100pxl. Ces 16 clips doivent etre disposés de facon a former un carré (de 4x4clips) et la taille de ma zone de travail est donc de 400x400pxl... et j'aimerais pouvoir faire un bouton qui permettrait de mélanger de facon alétoire les coordonnées de ces clips
cs_embalmer
Messages postés120Date d'inscriptionmercredi 14 décembre 2005StatutMembreDernière intervention10 décembre 2007 23 oct. 2007 à 20:49
Salut,
Tiens ton problème m'a amusé, même si j'avoue que j'ai eu plus de mal que prévu, m'enfin voilà :
A la racine de ton anim tu crées un clip avec pour nom d'occurence "randomArea", à l'intérieur tu places tes 16 clips (correctement placés) avec comme nom d'occurence "clip1", "clip2", "clip3", ... enfin tu place un bouton avec en nom d'occurence : "changeButton".
On peux surement faire plus efficace vu que je suis pas bon en algo mais bon ça marche.
var clipWidth:Number = 100;
var clipHeight:Number = 100;
var nbrClipX:Number = this.randomArea._width/this.clipWidth;
var nbrClipY:Number = this.randomArea._height/this.clipHeight;
var nbrTotalClip:Number = this.nbrClipY*this.nbrClipX;
var checkArray:Array = new Array();
var checkNumber:Number = 0;
var animRoot:Object = this;
// fonction de (re)mise à zéro du tableau des positions des clip
// Ce tableau permettra de savoir si les les position sont occupés ou vides (quand elle sont à 0)
function initArray() {
var m:Number;
for (m=0; m<=nbrTotalClip; m++) {
this.checkArray[m] = 0;
}
}
this.initArray();
function launchChange() {
var i:Number;
// Pour chaque clip ...
for (i=1; i<=nbrTotalClip; i++) {
// on choisit une vérification aléatoire
var posClip:Number = randomNumber(1, this.nbrTotalClip);
// Si la position est déjà occupée on sélectionne à nouveau une position aléatoire
while ((this.checkArray[posClip] != 0) && (checkNumber<nbrTotalClip)) {
posClip = randomNumber(1, this.nbrTotalClip);
}
// Si toutes les positions sont occupées
if (checkNumber<nbrTotalClip) {
// Calcul de la position des clips
trace(areaWidth);
var xPos:Number = ((posClip-1)%nbrClipX)*clipWidth;
var yPos:Number = (Math.floor((posClip-1)/nbrClipX))*clipHeight;
//trace("x position :"+posClip+" : "+ xPos);
//trace("y position :"+posClip+" : "+ yPos);
this.checkArray[posClip] = i;
this.randomArea["clip"+i]._x = xPos;
this.randomArea["clip"+i]._y = yPos;
this.checkNumber++;
}
}
}
// Fonction qui génère un nombre aléatoire
function randomNumber(min:Number, max:Number) {
var randomNbr:Number = Math.floor(Math.random()*(max-min+1))+min;
return randomNbr;
}