Visualizzazione dei risultati da 1 a 5 su 5

Discussione: "do... while" o cosa?

  1. #1

    "do... while" o cosa?

    Ciao ragazzi! sto diventando matto...

    voglio mettere 10 MC uno di fila all'altro, tra di loro c'è sempre una sovrapposizione. Tipo i MC sono 20px di larghezza e io li posiziono ogni 15px.
    Per far questo utilizzo:


    script:___________________________________________ __

    for (var i=0;i<10;i++){
    _root.attachMovieClip("clip","clip"+i,i);
    _root["clip"+i]._x=15*i;
    }
    __________________________________________________ _


    succede, naturalmente, che mettendo uno dopo l'altro i MC si disporranno da sinistra a destra su un livello sempre crescente.
    Io invece vorrei che fossero disposti su livelli in maniera random, cioè vorrei assegnare ai MC un livello random ma con la sicurezza che non vada a posizionarsi per sbagio in un livello già occupato, altrimenti mi cancella il MC già esistente.
    Allora cosa ho pensato di fare!?
    nel ciclo for ci metto un do... while

    e cioé


    script:___________________________________________ __

    for (var i=0;i<10;i++){
    do {
    var depth = random(10);
    var freeDepth = _root.getInstanceAtDepth(depth);
    } while (freeDepth == undefined);
    _root.attachMovie("clip", "clip"+i, freeDepth);
    _root["clip"+i]._x=15*i;
    }
    __________________________________________________ __


    Prò quando lo pubblico mi dice che lo script innescherebbe un ciclo che può bloccare il sistema

    Come posso fare?

    Qualcuno ha un'idea?

    Grazie ragazzi!

  2. #2
    niente?
    mi schifate proprio?


  3. #3
    Utente di HTML.it L'avatar di alpeweb
    Registrato dal
    Oct 2002
    Messaggi
    1,691
    un pò artigianale ma dovrebbe funzionare
    provalo e facci sapere

    arra=new Array()
    arrb=new Array()
    ele=0
    for(i=0;i<10;i++)
    {
    arra[i]=i+1
    }

    function randomizza(){
    if(ele<10)
    {
    rand=random(10)
    if(arra[rand]>0)
    {
    arrb[ele]=arra[rand]
    arra[rand]=0
    ele++
    }
    randomizza()
    }
    else{
    for (i=0;i<10;i++){
    _root.attachMovieClip("clip","clip"+i,arrb[i])
    _root["clip"+i]._x=15*i;
    }
    }
    randomizza()

    cmq guarderò anche l'utilizzo di getInstanceAtDepth(depth);
    ...altri 5 anni di purga...

  4. #4
    allora, ho provato ad usarlo, ma non è che funzioni tanto.
    Ma tu lo hai provato? perché magari sono io che sbaglio qualcosa.
    Ti dispiace se linco uno zip con il fla che ho fatto?
    flash mx va bene?

  5. #5
    allora
    alpeweb, ti ringrazio ma alla fine ho fatto in un altro modo
    forse un po' complicato, ma mi sembra che funzioni
    ti scrivo il codice:

    function findRandom(nClip) {
    var depth_array:Array = new Array();
    var neoDepth_array:Array = new Array();
    for (var i = 0; i<nClip; i++) {
    depth_array.push(i);
    }
    for (var i = 0; i<nClip; i++) {
    var nRand = random(depth_array.length-1);
    var neoVal = depth_array[nRand];
    neoDepth_array[i] = neoVal;
    var popped:Object = depth_array.pop();
    depth_array[nRand] = popped;
    }
    return (neoDepth_array);
    }
    function attachRandom(nClip) {
    var depth_array:Array = findRandom(nClip);
    for (var i = 0; i<nClip; i++) {
    var depth = depth_array[i];
    _root.attachMovie("clip", "clip"+i, depth);
    _root["clip"+i]._x = 100+(15*i);
    _root["clip"+i]._y = 100;
    }
    }
    attachRandom(10);
    stop();



    in pratica creo un array con numeri consecutivi e lo trasformo in un neo-array con gli stessi numeri ma randomizzati
    poi nella seconda funzione utilizzo questo array per determinare la profondità dei livelli

    certo sono due funzioni e magari sarebbe meglio una, ma così posso utilizzare la funzione findRandom anche per altre cose.

    Spero possa servire anche a qualcun'altro

    Ciao grazie a tutti e se avete qualche miglioria da propormi e un metodo più semplice... ben venga!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.