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

    istanze e loro comportamento...chiarimento

    ecco il link da cui parte la mia domanda...

    nell'esempio che ho spedito ci sono 5 istanze del movieclip "Mouse".

    Mouse (movieClip) contiene mouse_b (bottone).

    quindi, alcune domande:

    1) se modifico l'action script di mouse_b, modifico l'AS di tutte le istanze... è sempre così?

    2)la cosa che non mi quadra è che se modifico il nome d'istanza di mouse_b, tutte le altre istanze prendono lo stesso nome.
    E' sempre così?
    E se al posto del bottone mouse_b ci fossero campi di testo dinamici, potrei assegnare ad ogni campo un nome istanza univoco per ogni mc contenitore "mouse"?

    Inoltre, ultima cosa. Guardate l'As di mouse_b...
    //////

    on (release) {
    /:name = _name;
    /:target = _target;
    }

    ///// che è "/:" ? equivale a _parent?
    ///// e perchè scrive "_target"????

    io avrei scritto al massimo:
    /////

    on (release) {
    _root.name = _parent._name;
    }

    //// è sbagliato?

    thx

  2. #2
    /:name ----> _root.name // nome della variabile di testo dinamico


    io avrei scritto al massimo:
    /////

    on (release) {
    _root.name = _name; // senza il _parent
    }


    se crei un clip "prototipo" e dentro c'è un pulsante, una action ecc, e questo prototipo lo incolli + volte nello stage, anche se istanziato differentemente nel momento che esegui una modifica a prototipo questa si riflette ovviamente su tutti - esendo delle copie.

    quindi la risposta è SI: è normale.

    Ciao

  3. #3

    Re: istanze e loro comportamento...chiarimento

    1) se modifico l'action script di mouse_b, modifico l'AS di tutte le istanze... è sempre così?
    non confondere il movie copiato con i nomi di istanze, ogni movie puo' avere codice a se, variabili a se.


    2)la cosa che non mi quadra è che se modifico il nome d'istanza di mouse_b, tutte le altre istanze prendono lo stesso nome.
    E' sempre così?

    non e' mai cosi', non confondere il nome del movie con il nome di istanza

    E se al posto del bottone mouse_b ci fossero campi di testo dinamici, potrei assegnare ad ogni campo un nome istanza univoco per ogni mc contenitore "mouse"?
    il nome di istanza deve essere sempre univoco



    Inoltre, ultima cosa. Guardate l'As di mouse_b...
    //////

    on (release) {
    /:name = _name;
    /:target = _target;
    }

    ///// che è "/:" ? equivale a _parent?
    ///// e perchè scrive "_target"????

    io avrei scritto al massimo:
    /////

    on (release) {
    _root.name = _parent._name;
    }

    //// è sbagliato?

    thx

    il problema credo sia questo, scrivere AS clickando sui movie, sui bottoni, piuttosto che scriverlo dove io preferisco scriverlo ovvero in un keyframe e non nel movie.

    il codice qui sopra va rivisto:
    nomeIstanzaBottone.onRelease = function() {
    this.name = this._name;
    // ho creato la var name contenente
    // "nomeIstanzaBottone" e proprietaria solo ed esclusivamente
    // del bottone con nome di istanza nomeIstanzaBottone
    }



    //io avrei scritto al massimo:
    /////

    on (release) {
    _root.name = _parent._name;
    }

    giocandoti la variabile name per tutto il filmato senza avere l' esatto proprietario.
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  4. #4
    Esempio pratico
    creati un movieClip qualsiasi, schiaffalo nello stage e copialo li di fianco.
    Ora avrai 2 movieClip identici ( ma di identico c'e' solo il "puntatore grafico" )

    Clicki sul primo , metti nome di istanza a_mc
    Clicki sul secondo e metti nome di istanza b_mc
    ( quando scrivi i nomi di istanza ricordati di premere invio alla fine per confermare... verifica anche riclickando sul movie che sia stato memorizzato il nome di istanza desiderato )

    ora crei un nuovo layer vuoto , ci clicki col mouse, premi F9 e viene fuori il pannello delle action... expertMode se sei in MX, altrimenti niente se sei in MX 2004

    scrivi questo:
    codice:
    a_mc.miaVar = "prova A";
    a_mc.altraVar = "io si, B no";
    
    b_mc.miaVar = "prova movie B";
    
    
    a_mc.onPress = function() {
    	// primo metodo: CONSIGLIATO
    	trace("Il movie " + this._name + " ha la variabile miaVar con valore: " + this.miaVar);
    	trace("Il movie " + this._name + " ha anche la variabile altraVar con valore: " + this.altraVar);
    
    	// ripeto la stessa cosa inutilmente a scopo dimostrativo
    	trace("Il movie " + a_mc._name + " ha la variabile miaVar con valore: " + a_mc.miaVar);
    	trace("Il movie " + a_mc._name + " ha anche la variabile altraVar con valore: " + a_mc.altraVar);
    
    	// potrei raggiungere le vars anche passando da un percorso assoluto
    	trace("Il movie " + _root.a_mc._name + " ha la variabile miaVar con valore: " + _root.a_mc.miaVar);
    	trace("Il movie " + _root.a_mc._name + " ha anche la variabile altraVar con valore: " + _root.a_mc.altraVar);
    
    	// ma non esistera' mai questa riferita a quella interna:
    	trace(_root._name + " <--- ???");
    
    	// mentre ci sara' questa per il movie B
    	trace(b_mc.miaVar); // ammesso perche' stesso percorso
    	trace(_root.b_mc.miaVar);
    
    	// ma mai questa
    	trace(this.b_mc.miaVar + " <--- ???"); // non ammesso
    
    	// o questa:
    	trace(b_mc.altraVar + " <--- ???"); // no
    	trace(_parent.b_mc.altraVar + " <--- ???"); // no
    	trace(_root.b_mc.altraVar + " <--- ???"); // no
    }
    poi premi ctrl + invio , noterai che il primo movie , quello con nome istanza a_mc sara' clickabile, mentre b_mc no ( prima distinzione ) e noterai anche i vari accorgimenti commentati nel codice una volta clickato il primo movie.


    Spero di averti chiarito qualcosa e non aver fatto piu' confusione di quella che hai gia'.
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  5. #5
    grazie per il contributo, ragazzi!

    dal discorso di andr3a ho capito che una cosa è la copia di un mc ed un'altra è un'istanza.

    Tecnicamente, però mi sembra la stessa cosa.

    ESEMPIO: creo un bottone e lo inserisco in un movieclip.
    Copio/Incollo il movieclip appena creato, ed ottengo un secondo mc
    Trascino dalla libreria un terzo mc

    applico ai 3 mc 3 nomi d'istanza diversi. a_mc - b_mc - c_mc
    fin qui, tutto ok.
    Ma se inserisco un nome di istanza (b1_mc) al bottone contenuto nell'a_mc, accade che lo stesso nome viene assegnato anche ai bottoni contenuti in b_mc e c_mc...
    E questo è quello che non desidero affatto!
    Stesso scherzo me lo fa se, al posto dei bottoni, nell'mc inserisco un campo di testo di input...

    Una nota...
    rempox ha suggerito:
    ////
    on (release) {
    _root.name = _name; // senza il _parent
    }
    ////
    ma quel _parent l'ho messo perchè il _name non è quello dei bottoni, ma quello dell'mc contenitore... non dovevo fare così?

    grazie ancora.
    PS - FATEMI CAPIRE, vi prego! ILLUMINATEMI!

  6. #6
    si ma...

    movie1_mc.nomeBottone.onPress = function() {
    trace("bottone di movie 1");
    }

    movie2_mc.nomeBottone.onPress = function() {
    trace("bottone di movie 2");
    }


    puntare graficamente significa che se cambi il bottone, lo ritroverai cambiato in tutti i movie che contengono quel bottone, ma se dai un' azione ad un bottone di un movie, sempre via keyframe perche' se lo dai sul bottone non saprei, non sara' la stessa per gli altri bottoni, vedi l'esempio qui sopra.
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  7. #7
    Ciao ti ho suggerito di togliere il _parent perche non ricaveresti nulla

    Il clip "proto", che contiene il bottone "generic_button", si chiama (istanza)Andrea

    se al bottone contenuto in Andrea assegni

    on(press){trace(_name)}

    vedrai che esce Andrea, Non va a vedere il nome Istanza assegnata al Bottone, anche perche in riferimento al tuo esempio non serve.

    Se copy "proto" n volte e cambi istanza Andrea1, Andrea2, ecc vedrai che ad ogni Trace uscirà il nome di istanza del relativo clip.

    Ciao

  8. #8
    una piccola aggiunta suggerita da Andr3a.

    i pulsanti io li istanzio solo quando devo associare dall'esterno una azione

    esempio

    Se proto contiene un bottone e questo lo istanzi "bottone"

    _root.Andrea1.Bottone = function() {_root.nome=_name}
    ...........
    _root.Andrea20.Bottone = function() {_root.nome=_name}

    Otterrai la possibilità di avere un clip generico con un pulsante che può assumere qualsiasi AS ma senza dover modificare Clip e/o Pulsante

    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.