Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    duplicateMovieClip e getBounds

    Riesco a duplicare l'mc "minime", ma non riesco a far funzionare getBounds:


    i=i+1; // valore iniziale di "i" è 5
    duplicateMovieClip(minime, "minime"+i, i);
    var g = this["minime"+(i-1)].getBounds(this);
    trace (g._xMax);

    Come valore mi restituisce UNDEFINED.
    Ho provato anche con:

    var g = minime5.getBounds(this);

    ma niente da fare, il trace restituisce sempre UNDEFINED.

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Pubblichi per una versione specifica di actionscript e flash player?

    [edit] Niente scusa, lascia perdere la domanda di sopra, più che altro sarebbe utile saper dove si trova quel codice e a cosa fa riferimento "this".

  3. #3

    RE:

    Flash player 8 ActionScript 2.0

    Scusami!
    E' la prima volta che scrivo su un forum.

    Sono nella _root il codice è il seguente:

    i=0;
    this["minime"+i].minilod.loadMovie("/images/"+i+".jpg");
    for (i=1; i<9; i++) {
    duplicateMovieClip(minime0, "minime"+i, i);
    //var g = minime1.getBounds(this);
    //trace (g._xMax);
    if (i==4 || i==7) {
    this["minime"+i]._x = this.minime0._x;
    } else {
    this["minime"+i]._x = this["minime"+(i-1)]._x + 73;
    }
    if (i==4 || i==7) {
    this["minime"+i]._y= this["minime"+(i-1)]._y + 73;
    } else {
    this["minime"+i]._y =this["minime"+(i-1)]._y;
    }
    this["minime"+i].minilod.loadMovie("/images/"+i+".jpg");
    }



    Praticamente volevo utilizzare:

    var g = this["minime"+(i-1)].getBounds(this);
    minime5._y=g._ymax //ad esempio

    per evitare di ripetere ogni volta le espressioni che uso per specificare la posizione dei "minime". In sintesi mi serviva per conoscere la posizione esatta di ogni movieclip duplicato.


    PS. Un valido aiuto sarebbe come fare a gestire i livelli dei Movieclip duplicati, evitare che restino visibili in tutti i fotogrammi.

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Ok, ora è più chiaro. Il problema sta nel fatto che il loadMovie è un metodo distruttivo e significa che quando viene lanciato, il movieclip interessato viene "svuotato" di tutto quello che c'è al suo interno e prima di poter recuperare variabili come altezza, larghezza ecc, devi essere certo che il caricamento esterno sia terminato.
    Per farlo dovresti utilizzare una verifica temporale del caricamento, in sostanza un preload. Ma considerato che stai pubblicando per il flash player 8, direi che è meglio se utilizzi direttamente la classe MovieClipLoader per gestire il tutto.

    Nel caso specifico, per mettere in griglia alla giusta distanza le tue immagini, devi prima attendere che tutte siano state caricate. Vedo se riesco a scriverti un esempio, intanto mi servirebbe capire come è composto il clip iniziale "minime0".

  5. #5
    Anche se sviluppato con i piedi, il codice funziona a meraviglia, solo che credo si possa migliorare parecchio, così da poterlo utilizzare come una funzione.
    Basta avere la cartella "images" contenente le immagini numerate da 0 a N.

    Mi piacerebbe sapere perchè:
    var g = minime1.getBounds(this);
    Non funziona, e perchè i movieclip duplicati restano su tutti i frame.

    PS. Come ti allego uno zip?

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Gli zip non si possono allegare.

    Mi piacerebbe sapere perchè:
    var g = minime1.getBounds(this);
    Non funziona
    Il perchè te l'ho spiegato nel post precedente, ti ci vuole il preload.

    e perchè i movieclip duplicati restano su tutti i frame.
    Questo invece non mi è chiaro, o meglio penso di aver capito cosa vuoi dire, ma ti dico subito che su elementi creati a runtime, la situazione è assolutamente normale, per eliminarli bisogna agire così come li si crea, ossia via codice.

    Comunque ho fatto un test, come potevo (ho creato direttamente i clip a runtime invece di partire da uno già creato) e ottengo il risultato sperato.

    Questo è il codice (ho messo il posizionamento in griglia in una funzione separata richiamata nella funzione di "caricamento avvenuto" solo quando tutte le immagini sono state caricate).

    Codice PHP:
    var c:Number 0;
    var 
    e:Array = [];
    var 
    a:Array = ["coding.png""computer.png""customize.png""documents.png""downloads.png""drive2.png""empty.png""error.png""error2.png"];
    var 
    l:Object = new MovieClipLoader();
    l.onLoadInit = function (m:MovieClip) {
        if (
    a.length-1) {
            
    c++;
        } else {
            
    setClipToGrid(e5000000);
        }
    }
    for (var 
    i:Number=0i<9i++) {
        
    e.push(this.createEmptyMovieClip("m"+ii));
        
    l.loadClip(a[i], e[i]);
    }
    function 
    setClipToGrid (a:Array, w:NumberbaseX:NumberbaseY:NumberdistanceX:NumberdistanceY:Number) {
        for(var 
    i:Number=0i<a.lengthi++) {
            var 
    i>a[Number(i-1)] : null;
            
    a[i]._x != null ? (q._x w-q._width q._x+q._width+distanceX baseX) : baseX;
            
    a[i]._y != null ? (q._x w-q._width q._y q._y+q._height+distanceY) : baseY;
        }


  7. #7
    >perchè i movieclip duplicati restano su tutti i frame.


    xchè li hai messi su dei livelli superiori allo 0..quindi nel passare al frame dovresti eliminarli
    la verità non è una meretrice che si getta al collo di chi non la vuole ma anzi essa è dotata di una così altera bellezza che anche chi sacrifica tutto per ottenerla non è sicuro di averla raggiunta !

  8. #8

    RE

    Tutto sto casino??? Ma nooooooooooo sono solo delle thumb le mie!
    Tra l'altro l'array è in asp da db access!
    Cmq funziona, mi serviva solo sapere come diavolo utilizzare il getBound ed eliminare gli MC duplicati.

    Come li metto sullo stesso livello?

  9. #9
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Niente allora, il "casino" è necessario per fare quel che devi, altrimenti non lo puoi fare.

    Come li metto sullo stesso livello?
    I clip creati a runtime non possono stare sullo stesso livello di quelli creati a mano e non è possibile perciò farli "coincidere" con i frame.

  10. #10
    Niente allora, il "casino" è necessario per fare quel che devi, altrimenti non lo puoi fare.
    Ma se ti ho già detto che funziona!!!!!!
    www.vixed.it/test/duplo.zip

    Basta avere la cartella "images" contenente le immagini numerate da 0 a N.

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.