Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    39

    Chiarimenti su addChild

    Salve a tutti,

    sto passando lentamente ad AS3 e talvolta incontro qualche difficoltà

    sto cercando di convertire un vecchio script dove si usava il duplicateMovieClip;

    adesso per esempio con questo codice

    codice:
    for (var t:uint=1; t<numstars; t++) { 
    	
    	var c:Star = new Star(); 
        
    	c.x = stage.stageWidth*Math.random()+xmin;
    	c.y = stage.stageHeight*Math.random()+ymin;
            addChild(c); 
    }
    genero sullo stage delle copie della clip Star e le posiziono a caso
    Quello che volevo sapere è: che nome hanno questi duplicati?
    In pratica mi serve saperlo per assegnare in seguito delle proprietà a queste clip, quello che si faceva per esempio con

    duplicateMovieClip("star", t, t);

    e poi con

    _root["star"+t]._y+=10;


    Spero di essere stato chiaro!
    ciao

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    La cosa più conveniente sarebbe quella di usare un array in cui inserire il riferimento di ogni clip, in modo poi da recuperare ogni elemento solo con l'indice assegnato.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    39
    si avevo già pensato ad una cosa del genere, ero solo curioso di sapere se c'era anche un modo simile a quello usato con AS2

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Diciamo di sì, ma è necessario che il clip usato per agganciare i duplicati sia istanza della classe Movieclip. Ora sto sul cellulare e non riesco a scriverti un esempio. Appena posso lo faccio.

  5. #5
    Originariamente inviato da and80
    Diciamo di sì, ma è necessario che il clip usato per agganciare i duplicati sia istanza della classe Movieclip. Ora sto sul cellulare e non riesco a scriverti un esempio. Appena posso lo faccio.
    vediamo se ti do una mano

    codice:
    var myArray:Array=new Array();
    for (var t:uint=1; t<numstars; t++) {  
    	 	var c:Star = new Star(); 
                    c.name=i;
          	        c.x = stage.stageWidth*Math.random()+xmin;
     	       c.y = stage.stageHeight*Math.random()+ymin;
    myArray.push(c);
             addChild(c);  
    }
    Photogallery Flash Gratis - http://www.flashfiles.biz -
    Template in Flash con pannello di Amministrazione e deeplinking Guarda il template qui

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    39
    grazie per l'esempio, suppongo sia

    c.name=t; e non c.name=i;


    in questo caso quindi potrò fare per esempio

    t.y+=10;

  7. #7
    Originariamente inviato da gandall
    grazie per l'esempio, suppongo sia

    c.name=t; e non c.name=i;


    in questo caso quindi potrò fare per esempio

    t.y+=10;
    sry t è giusto

    io di solito uso la variabile per dare le distanze

    c.y=20*t;
    Photogallery Flash Gratis - http://www.flashfiles.biz -
    Template in Flash con pannello di Amministrazione e deeplinking Guarda il template qui

  8. #8
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    Originariamente inviato da gandall in questo caso quindi potrò fare per esempio t.y+=10;
    No, fuori dal ciclo "t" non significa nulla perchè è solo una variabile locale che serve per determinare il numero di interazioni che avrà il ciclo for.

    Originariamente inviato da gandall
    Quello che volevo sapere è: che nome hanno questi duplicati?
    In pratica mi serve saperlo per assegnare in seguito delle proprietà a queste clip
    I duplicati hanno il nome che gli assegni utilizzando la proprietà .name ma Flash li identifica come [object MovieClip] quindi, secondo la tipologia dell'istanza creata con il costruttore new.

    Puoi riempire un Array di nomi assegnati con la proprietà .name ma è inutile perchè per fare riferimento a un elemento del tuo Array devi comunque fare riferimento al suo indice numerico.

    Il nome che gli hai assegnato con nomeIstanza.name, di fatto non è un MovieClip ma una stringa.
    Forse questo esempio ti può aiutare a capire meglio:

    Codice PHP:
    var array:Array = new Array();

    for(var 
    i:uint 09++)
    {
        var 
    clip:MovieClip = new MovieClip;
        
    clip.graphics.beginFill(0x000000);
        
    clip.graphics.drawRect(10,10,50,50);
        
    clip.clip.60 i
        clip
    .name "clip" i
        addChild
    (clip);
        array.
    push(clip);
        
    trace(clip.name); // nomi dei clip
        
    trace(clip); // [object MovieClip]  
    }
    trace(array); // [object MovieClip],[object MovieClip],[object MovieClip]....
    array[0].alpha .5 // OK il 'clip0' è ad alpha .5
    //clip0.alpha = .5 // ERRORE: accesso alla proprietà non definita clip0 

    ciao

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.