Coordonnées aléatoires de clips

Messages postés
13
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
15 juin 2009
- - Dernière réponse : akoufen
Messages postés
13
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
15 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

merci
Afficher la suite 

2 réponses

Messages postés
120
Date d'inscription
mercredi 14 décembre 2005
Statut
Membre
Dernière intervention
10 décembre 2007
0
Merci
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;
}

this.changeButton.onPress = function() {
    animRoot.initArray();
    animRoot.checkNumber = 0;
    animRoot.launchChange();
};

++
Commenter la réponse de cs_embalmer
Messages postés
13
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
15 juin 2009
0
Merci
merci bcp
ca fonctionne:D
Commenter la réponse de akoufen