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

    Estendere metodi dei movieclip. Possibile?

    Mi domandavo se è possibile estendere i metodi standard dell'oggetto MovieClip()

    Ad esempio io ho questa funzione:
    codice:
    function creaRett(trg:MovieClip,nome:String,lar:Number,alt:Number,colore:Number,alfa:Number):MovieClip{
    	var rett:MovieClip=trg.createEmptyMovieClip(nome,trg.getNextHighestDepth())
    	rett.beginFill(colore,alfa)
    	rett.lineTo(lar,0)
    	rett.lineTo(lar,alt)
    	rett.lineTo(0,alt)
    	rett.lineTo(0,0)
    	rett.endFill()
    	return rett
    }
    Solo che ogni volta devo passare alla funzione il target.
    Non si potrebbe creare qualcosa (forse le classi servono a questo ma non le ho mai capite ^^)
    del tipo che io faccio
    codice:
    var mc:MovieClip = _root.createEmptuMovieClip("mioclip", 1)
    //createRect sarebbe il nuovo metodo dei movieclip
    mc.createRect("rettangolo", 100,50,0,100)

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Sì ma lascia stare l'estensione di MovieClip in AS2, dovresti comunque mettere un MC in libreria da collegare alla classe esterna che lo estende, troppi passaggi per un minimo di ordine in più

    al contrario, in AS3 i display object possono essere facilmente estesi, perchè non devono essere inizializzati con createEmptyMovieClip come in AS1/2, ma con l'operatore new così sono un attimo più allineati con gli standard degli altri linguaggi OOP

    tralasciando questa piccola parentesi, ti dico che il modo più semplice di estendere un metodo è di usare prototype, ad esempio nel tuo caso faresti:

    Codice PHP:
    MovieClip.prototype.creaRett = function (nome:Stringlar:Numberalt:Numbercolore:Numberalfa:Number):MovieClip  {
        
    this.createEmptyMovieClip (nome,this.getNextHighestDepth ());
        
    with (this[nome]) {
            
    beginFill (colore,alfa);
            
    lineTo (lar,0);
            
    lineTo (lar,alt);
            
    lineTo (0,alt);
            
    lineTo (0,0);
            
    endFill ();
        }
        return 
    this[nome];
    }; 
    per poi usarla così:

    Codice PHP:
    this.creaRett("test"1001000100); // creo il rettangolo su _root 

  3. #3
    Ma prototype non era diventato obsoleto?

    Funzia comunque, prima o poi mi darò all'AS3

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    no non è obsoleto, anzi esiste anche su AS3 anche se non so come funziona visto che estendo direttamente le classi di visualizzazione

    [edit] funziona allo stesso modo:

    Codice PHP:
    MovieClip.prototype.test = function () {
        
    trace("hello!");
    }
    var 
    mc:MovieClip = new MovieClip();
    mc.test(); 

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.