Visualizzazione dei risultati da 1 a 7 su 7

Discussione: prototype

  1. #1

    prototype

    chi e' cosi' gentile da spiegarmi i prototipi in actioscript?

    che fa questa funzione?

    MovieClip.prototype.loader

    Grazie
    Trinity
    http://www.vocabolariodidio.it
    http://www.giulianodelena.com
    trova la tua casa per le vacanze
    http://www.salento.lecce.it

  2. #2

    prototype

    Le prototype sono fondamentalmente funzioni. L'unica differenza che risiede tra le prototype e le funzioni, sono che le prototype non si dichiarano dentro un istanza o dentro un oggetto ma si dichiarano per estendere la classe dell'oggetto.

    Mi spiego meglio.
    In flash esistono diverse classi di oggetti, ad esempio le classi:

    MovieClip
    Sound
    Object
    String

    queste sono a tutti gli effetti classi di oggetti.
    Per capire la differenza tra classi e oggetti possiamo dire che possiamo avere sullo stage 500 clip ma tutti appartengono alla classe "MovieClip". Quindi l'oggetto è un singolo elemento, la classe è la collettività. Ora sappiamo tutti che una classe e i suoi oggetti possono avere delle funzioni che un altre classi non possono avere, per esempio:

    MovieClip.play();

    dove "play" è una funzione dell'oggetto della classe MovieClip che NON può esistere per gli altri oggetti: chi scriverebbe mai ad una stringa di andare in play?

    String.play(); //non ha senso!

    Le prototype permettono di scrivere le funzioni per le classi, che una volta dichiarate varranno per tutti gli oggetti appartenenti alla classe, quindi, se io dichiaro una prototype sulla classe MovieClip, ad esempio:

    MovieClip.prototype.Dimezza = function() {
    this._width = this.width/2; //dimezzo la larghezza
    this._height = this.height/2; //dimezzo l'altezza
    };

    questa funzione essendo una prototype non verrà dichiarata su un singolo CLIP filmato... ma su tutta la classe, quindi:

    myClip.Dimezza(); // funziona
    myClip.myclip2.Dimezza(); //funziona
    AltroClip.Dimezza(); // funziona

    Qualsiasi oggetto possiederà questa funzione per appartenenza di classe.

    I vantaggi più immediati sono:

    1) scrittura del codice come se la funzione in questione fosse GLOBALE esistendo a qualsiasi livello e senza bisogno di ricercarla: una funzione normale bisognerebbe ricercarla così:

    _root.nomeclipdoveèpresentelafunzione.funzione(_ro ot.targetCLIP, args);

    invece possiamo effettuare direttamente

    _root.targetClip.prototype(args);

    codice più pulito.

    2) codice più pulito

    //====================
    Per una trattazione completa sulle prototype ecco un link di riferimento: http://www.ultrashock.com/ff.htm?<a ...orial.html</a>
    Per visitare una libreria di funzioni prototype già preconfezionate ecco qua: http://www.sephiroth.it/prototype.php


    PS: Che cos'è "Movieclip.prototype.loader" ?
    E' la dichiarazione della prototype "loader" alla classe "movieclip" per estenderla, probabilmente il codice continua con un
    " = function(.....) { .... } ".

  3. #3
    :metallica GRaNDISSI<O!!!
    grazie
    Trinity
    http://www.vocabolariodidio.it
    http://www.giulianodelena.com
    trova la tua casa per le vacanze
    http://www.salento.lecce.it

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    27
    Ma quindi io posso anche scrivere:

    UllaLa.prototype.nonCapisco = function(){
    }

    e UllaLa diventa una classe, associare quindi un MC alla classe UllaLa (anche se non so come si fa ad associare un mc a una classe) e ogni volta che decido posso scrivere

    mioMc.nonCapisco;

    e il mio MC (diciamo così..) "non capisce"?

    -----------------------------------------

    Se posso creare una classe e associarci dei MC che utilizzerano quel determinato prototype è potentissimo, oltre che più pulito.
    Se è così mi spiegate come fare?
    Grazie
    Ikniv

    P.S. non mi rimandate a link dove spiegano i prototype in inglese, altrimenti non scrivevo al forum

  5. #5
    MovieClip.prototype.nonCapisco = function(){
    }

    Movieclip è la classe.. e tu aggiungi un metodo all'intera classe.

    Se l'istanza "ullalà" è un oggetto Movieclip allora acquisirà, come tutti i movieclip anche il tuo nuovo metodo.

    Capito("?");


  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    27
    Ok, MovieClip è la classe.
    Ma io posso creare una nuova classe, fare in modo che solo alcuni mc facciano parte di questa classe?
    E se posso farlo, come lo faccio?

    Dai trasformiamo la funzione "nonCapisco" in "hoCapitoEureka"!

    Grazie

    Ikniv

  7. #7
    Puoi creare una nuova classe sì... ma ci sono delle classi predefinite e queste sono come puoi immaginare:

    movieclip
    button
    number
    string
    object
    e molte altre...

    Tutti i clip appartengono alla classe movieclip e quando vengono generati sono un istanza particolare di questa stessa classe.
    Non credo che tu possa creare una nuova classe con gli stessi atributi di movieclip (cioè con tutti i suoi metodi). Quindi o scrivi i metodi per queste classi esistenti o ne crei un altra ex-novo che sarà vuota come un object.

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.