Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [AS3] Quanti controlli ho sullo stage?

    Salve

    Come faccio io a stabilire quanti textfield ho sul mio stage?
    Teoricamente, visto che il mio progetto non è molto dinamico, potrei anche saperlo... ma volendo lasciare questa incombenza a flash come faccio?

    Se proprio non posso sapere quanti... posso almeno elencarli?

    Grazie
    Dice il saggio:
    Non ci sono domande difficili, esistono solo risposte che non conosciamo!
    "Se qualcosa può andare male, lo farà" - Murphy

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Se vuoi sapere quanti textfield ci sono solo nel tuo stage, la cosa non è particolarmente complicata, basta prepararsi una funzione iterativa che controlli tutti gli elementi e verifichi quali appartengono alla classe TextField, mentre per sapere quanti ce ne sono in tutto il tuo progetto dovresti controllare a più livelli prima tutti i DisplayObjectContainer che hai e poi controllare gli stessi per verificare se hanno dentro TextField o ancora altri DisplayObjectContainer.

    Per la prima ipotesi ti puoi costruire facilmente una funzioncina con un ciclo for a cui passare la timeline che ti interessa controllare e da cui ti puoi far restituire un array della collezione di quel tipo di oggetto:

    Codice PHP:
    function classObjectsArray (t:DisplayObjectContainerc:Class):Array {
        var 
    a:Array = [];
        for (var 
    i:uint=0i<t.numChildreni++) {
            if (
    t.getChildAt(iis c) {
                
    a.push(t.getChildAt(i) as c);
            }
        }
        return 
    a;

    Per testarla usi questo codice, ad esempio io nel mio stage ho posizionato 10 textfield e 10 movieclip
    Codice PHP:
    var a:Array = classObjectsArray (thisTextField); // crea un array che contiene solo i TextField
    trace(a.length); // restituisce 10
    trace(a); // restituisce la lista dei textfield
    a[0].text "Pippo"// imposta il testo del primo campo
    var b:Array = classObjectsArray (thisMovieClip); // crea un array che contiene solo i MovieClip
    trace(b.length); // restituisce 10
    trace(b); // restituisce la lista dei movieclip sullo stage
    b[0].+= 100// sposta il primo movieclip di 100px rispetto alla sua posizione iniziale 

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.