Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    29

    rinominare un istanza clip

    ciao a tutti;

    ho la bellezza di 2400 clip identiche sul mio filmato che ho creato con dei copia/incolla.

    ovviamente il copia/incolla copia ed incolla anche il nome dell'istanza. visto che ho bisogno di accedere al clip (e quindi ho bisogno di assegnare ad ogni clip un nome istanza diverso), mi domando se c'è un modo veloce per rinominare più clip in una volta sola.

    spero che esista un modo altrimenti mi dovrò prendere una settimana di vacanza e modificare tutte le clip a mano..

    grazie (come sempre), pietro.

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    tutti con lo stesso nome?! in AS non puoi far nulla... avresti fatto prima a mettere un singolo clip sullo stage per poi duplicarlo con AS, oppure lo potevi lasciare in libreria e con AS avresti potuto attaccarlo attraverso un ciclo quante volte volevi, con il nome che volevi...

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    29
    è quello che volevo fare. ho il clip nella libreria e lo posso mettere nel filmato quante volte voglio (uso myClip.attachMovie), ma il problema è che a questo clip ho del codice actionscript assegnato (on (press)...) , e non so come a fare a duplicare anche il codice.

    c'è un modo?

    ciao, pietro.

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    puoi dare il codice delle azioni direttamente sulla timeline, ti faccio un esempio

    Codice PHP:
    for(var 1<= 5i++) {
    var 
    clip this.attachMovie("clip""clip"+ii);
    // ometto la parte dell'assegnazione delle coordinate
    //
    // assegno ai clip un onPress che avrà un'azione uguale per tutti
    clip.onPress = function(){
    trace(this._name);
    }


  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    29
    c'è un problema. l'ho provato e funziona perfettamente. il problema è che non capisco il codice..

    capisco il ciclo for e capisco anche: this.attachMovie("clip", "clip"+i, i);

    ma perchè prima hai scritto var clip? il comando var non serve a creare una variabile/istanza? sta creando un'istanza di cosa?

    comunque visto che ho risparmiato una settimana di lavoro, vengo a casa tua a farti le pulizie?

    ciao e grazie, pietro.

  6. #6
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    ma perchè prima hai scritto var clip? il comando var non serve a creare una variabile/istanza? sta creando un'istanza di cosa?
    Ciao

    var è l'istruzione che serve a dichiarare una variabile locale.

    Come saprai esistono diversi tipi di variabile.

    In questo caso and80 ha utilizzato la variabile "clip" per identificare un semplice riferimento alle istanze che sono create di volta in volta nel ciclo for.

    Quindi la variabile "clip" sarà di tipo MovieClip.

    Non farti confondere dal nome "clip" che and80 ha utilizzato sia come variabile sia come nome identificativo dell'oggetto in libreria e sia come nome di istanza (seguito dall'indice i) per le istanze create dal metodo attachMovie.

    Se può esserti d'aiuto per capire meglio, utilizzo l'esempio di and80 sostituendo il nome clip con differenti nomi, in questo modo:

    codice:
    for(var i = 1; i <= 5; i++) {
       var riferimento = this.attachMovie("nomeOggetto", "nomeIstanza"+i, i);
       //
       riferimento.onPress = function(){
          trace(this._name);
       }
    }
    Nell'esempio viene eseguito un ciclo che ripeterà il blocco di codice per 5 volte.

    Ogni volta che si ripete il ciclo, "riferimento" assume il valore dell'istanza creata dal metodo attachMovie, la quale avrà comunque il suo proprio nome istanza (identificato dalla costruzione di "nomeIstanza"+i)

    Questo sistema serve essenzialmente per facilitare il "richiamo" dell'istanza nel resto dello script.

    Infatti tale variabile è stata poi utilizzata per attribuire una funzione dell'evento onPress ad ogni istanza a cui fa riferimento nel corso del ciclo.

    Volendo si sarebbe potuto scrivere in questo modo:

    codice:
    for(var i = 1; i <= 5; i++) {
       this.attachMovie("nomeOggetto", "nomeIstanza"+i, i);
       //
       this["nomeIstanza"+i].onPress = function(){
          trace(this._name);
       }
    }
    ovvero andando a "ricostruire" il nome dell'istanza appena creata.

    In questo caso l'esempio di and80 è semplice per cui si potrebbe anche fare a meno di utilizzare una variabile come riferimento.

    Immagina però di dover richiamare l'istanza appena creata per attribuire diverse proprietà e/o funzioni.. nota come è utile avere un semplice riferimento che ti risparmia di "ricostruire" ogni volta il nome dell'istanza appena creata.

    Ad esempio potrebbe esserci una situazione del genere:

    Codice PHP:
    for(var 1<= 5i++) {
       var 
    clip this.attachMovie("clip""clip"+ii);

       
    //... inserisco la parte dell'assegnazione delle coordinate
       
    clip._x = (clip._width+5)*i;
       
    clip._y 80;
       
    // .... assegno una variabile interna all'istanza
       
    clip.idIstanza i
       
    //

       // assegno ai clip un onPress che avrà un'azione uguale per tutti
       
    clip.onPress = function(){
          
    trace(this._name+", numero istanza: "+this.idIstanza);
       }

       
    // ... assegno altri eventi
       
    clip.onRollOver = function(){
          
    trace("sei sull'istanza: "+this._name);
       }


    Il riferimento "clip" richiama l'istanza appena creata evitando quindi di ricostruire più volte il suo proprio nome istanza all'interno del ciclo.

    Spero ti sia più chiaro...

    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    29
    si è decisamente tutto chiaro. purtroppo provengo da una generazione di programmatori di turbo pascal. poi per anni mi sono dedicato ad altre cose e solo adesso mi sto affacciando al mondo dei nuovi linguaggi e della programmazione ad oggetti e purtroppo ragiono ancora con le logice di 15 anni fà.

    grazie ancora, siete stati esaustivi e gentilissimi.

    ciao, pietro.

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.