Coordonnées aléatoires de clips

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

2 réponses

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

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

++
0
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
merci bcp
ca fonctionne:D
0
Rejoignez-nous