Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: creare un metodo

  1. #1

    creare un metodo

    non so se sia giusto il titolo, ma il mio problema è il seguente:
    ho un mc che si chiama "mc1" e vorrei che assegnando ad un pulsante l'azione "mc1.sparisci()" mi esegua le azioni del metodo (metodo?) "sparisci" riferite a "mc1"
    con "sparisci" vorrei dare un'alpha progressivo

    scusate le eventuali imprecisioni
    nicola
    Abeti nel deserto? Nemmeno l'ombra (A. Bergonzoni)
    _________________________________
    www.like-a-loft.com

  2. #2
    Con AS1 devi crearti una funzione prototype, con AS2 devi estendere la classe MovieClip.

  3. #3
    mi puoi spiegare? io uso flash5

    e di quello che hai detto non ho capito nulla, puoi fornirmi un link?
    nicola
    Abeti nel deserto? Nemmeno l'ombra (A. Bergonzoni)
    _________________________________
    www.like-a-loft.com

  4. #4
    In Flash 5, come in Flash MX, devi fare in questo modo:

    codice:
    MovieClip.prototype.ciao = function(){
    	trace("ciao");
    };
    
    test.ciao();
    ovviamente test è il nome istanza di una clip filmato.

  5. #5
    ti ringrazio!
    posso rubarti un altro post?
    io metto come azione associata al fotogramma:

    MovieClip.prototype.sparisci = function () {
    do {
    this._alpha -= 10;
    trace (this._alpha);
    tempo = getTimer();
    do {
    t1 = getTimer();
    } while (t1<tempo+130);
    } while (this._alpha>1);
    }

    e al pulsante dico

    r1.sparisci()

    [r1 è il mc]

    il fatto è che il risultato è giusto (cioè r1 sparisce) ma la trasparenza si vede tutta d'un botto!
    help
    nicola
    Abeti nel deserto? Nemmeno l'ombra (A. Bergonzoni)
    _________________________________
    www.like-a-loft.com

  6. #6
    Già, perché il ciclo avviene in un attimo e quindi non hai il tempo di vederne l'effetto.

    Devi richiamare il metodo sull'evento enterFrame della clip, ovviamente devi anche eliminare il ciclo, facendo un controllo sull'_alpha attuale della clip e, quando raggiunge il livello di _alpha che desideri, ne interrompi la diminuzione.

    Con Flash 5 è meno pratico che con Flash MX per via delle limitazioni stesse del programma.

  7. #7
    ma il ciclo non avviene in un attimo, tant'è che da quando clicco sul pulsante (quello che chiama il prototype) la manina che appare al posto del puntatore (quella standard) rimane per un pezzo, anche se muovo il mouse fuori da flash!

    cmq proverò la soluzione che mi hai spiegato, sempre che mi spieghi
    su quale clip devo richiamare il metodo (una nuova? o una al posto del pulsante?) e da dove devo fare il controllo dell'alpha del movie

    grazie1000
    nicola
    Abeti nel deserto? Nemmeno l'ombra (A. Bergonzoni)
    _________________________________
    www.like-a-loft.com

  8. #8
    Il metodo lo devi richiamare, ovviamente, dalla clip che vuoi far sparire, il controllo lo fai all'interno della funzione:

    codice:
    MovieClip.prototype.fadeOut = function(){
    	if(this._alpha < 0) return;
    	else this._alpha -= 5;
    };
    mentre nelle azioni della clip farai:

    codice:
    onClipEvent(enterFrame){
       this.fadeOut();
    }

  9. #9
    ho provato con

    MovieClip.prototype.fadeOut = function(){
    if(this._alpha < 0) return;
    else
    do {
    this._alpha -= 5;
    tempo=getTimer();
    do {
    t1=getTimer();
    } while(t1<(tempo+33));
    } while (this._alpha>0);
    };


    e ad associare l'azione nomeclip.fadeOut(); ad un pulsante.

    risultato?
    la clip che voglio far scomparire scompare, e anche con i tempi giusti, ma non mi mostra gli stati intermedi (quelli con alpha tra 100 e 0)

    Help!!!
    Abeti nel deserto? Nemmeno l'ombra (A. Bergonzoni)
    _________________________________
    www.like-a-loft.com

  10. #10
    Originariamente inviato da nicolamanzoni
    ho provato con

    MovieClip.prototype.fadeOut = function(){
    if(this._alpha < 0) return;
    else
    do {
    this._alpha -= 5;
    tempo=getTimer();
    do {
    t1=getTimer();
    } while(t1<(tempo+33));
    } while (this._alpha>0);
    };
    Mi spieghi cosa diavolo ti servono quei cicli do... while nidificati?

    Quello che ti ho scritto come esempio esegue giù il fadeOut, non hai bisogno di altri mille "giri" di codice.

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.