Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Eval e AS3

  1. #1

    Eval e AS3

    Eval non è più supportato da AS3, come si fa nel caso volessimo accedere ai dei clip o alle variabili in modo dinamico?

    prima si procedeva in due modi tipo
    codice:
    for (i=0;i<5;i++){
      eval("miavar"+i) //primo modo
      _root["miavar"+i) //secondo
    }
    Ora?


    Se lo dovessi fare con i clip? Cercando di fare qualche test, ho provato a fare questo

    codice:
    for (var i:Number=0;i<10;i++){
    	var qd:Quadrato= new Quadrato()
    	//qd.name="qd"+i
    	addChild(qd)
    	qd.x=120
    	qd.y=150*i	
    }
    
    
    for (i=0;i<numChildren;i++){
    	trace(getChildAt(i).name)
    }
    Ho visto che il nome di default prendeo tipo "instanceN". Ma se imposto il nome a mano (istruzione commentata), lo modifica e sotto leggo il nome che ho impostato (qdN). Ma effettivamente il name è l'identificativo del clip? (ha senso parlare di clip ^^?)

    Se volesi accedere all'elenco tipo Stage[qd+i] come dovrei fare?

    AS3 è un modo molto diverso di programmare rispetto al passato, immagino ci saranno enormi vantaggi, ma mi sembra che ci sia tutto da rifare.

    Perchè non fate una bella guida sulla migrazione, sarebbe utilissima secondo me?^^

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    nel caso che i clip siano già presenti su root è possibile accedervi esattamente come si faceva prima attraverso

    root["nomeclip"+indice]

    mentre nel caso di creazioni dinamiche, consiglio di usare un array per racchiudere i clip in modo da poter accedere ad ogni singolo elemento solo richiamandone l'indice di appartenenza

    se ad esempio crei una serie di loader, per un motivo qualsiasi, puoi sfruttare un array per separare i vari elementi e riutilizzarli quando necessario:

    Codice PHP:
    var a:Array = [];
    for (var 
    i:uint=0i<10i++) {
        var 
    l:Loader = new Loader();
        
    a.push(l);

    successivamente puoi sfruttare questi elementi partendo direttamente dall'array, ad esempio ne gestisci le coordinate e li posizioni in maniera random sullo stage:

    Codice PHP:
    for (var j:uint=0j<a.lengthj++) {
        
    a[j].Math.random()*1000;
        
    a[j].Math.random()*600;
        
    addChild(a[j]);

    in questo modo hai tutta la libertà di muoverti dentro la tua serie senza bisogno di ricorrere a getChildAt o getChildByName ecc... per ogni clip creato al volo

  3. #3

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2000
    Messaggi
    1,309
    Scusate se riapro, ma se volessi dichiarare degli array dinamicamente?

    tipo così:
    var eval("arrFile"+i):Array = new Array();

    Come me la sbrigo??
    Ciao By Peter_Pan...

  5. #5
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    li devi associare ad un'istanza di classe dichiarata "dynamic", ad esempio la classe MovieClip come display object oppure più semplicemente un Object, ad esempio

    Codice PHP:
    var array_list:Object = {};
    for (var 
    i:uint=0i<3i++) {
        
    array_list["arr"+i] = [];

    e creo tre array vuoti a cui posso arrivare attraverso la stessa sintassi nel ciclo oppure attraverso il nome completo

    Codice PHP:
    trace(array_list.arr0); // traccia il contenuto del primo array 

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.