Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di duri93
    Registrato dal
    Dec 2008
    Messaggi
    155

    [as3] Error 1016 classe extends Graphics

    Salve a tutti, eccomi ritornato...
    Dopo aver letto un po di documentazione sulle classi, ho deciso di provare a crearne una mia...
    Per ora questa classe contiene solo una funzione che disegna un rettangolo.

    Ecco il codice della classe
    Codice PHP:
    package{
         
    import flash.display.Graphics;
         
         public class 
    Disegna extends Graphics//qui
              
    public function rettangolo(Contenitore:ObjectposX:intposY:intWidth:intHeight:intColore:Number=000000Alpha:Number=1Smusso:Number=0){
                   
    Contenitore.Graphics.beginFill(Colore,Alpha);
                   
    Contenitore.Graphics.drawRoundRect(posX,posY,Width,Height,Smusso,Smusso);
                   
    Contenitore.Graphics.endFill();
              }
         }

    il problema è che fa errore in quella riga col commento...
    precisamente dice:
    1016: Base class is final.

    Guardando sulle guide c'è scritto che la classe base non può essere estesa perchè è di tipo final... ma negli esempi che ho usato per imparare il codice era molto simile ma non faceva errore...

    Probabilmente è un errore stupido come al solito, solo che io non so proprio come fare....

    GRAZIE A TUTTI X LA PAZIENZA E L'AIUTO!!!

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Ci sono delle classi che non possono essere estese, perchè hanno appunto l'attributo final.
    La classe in questione, in particolare, è una classe di servizio che contiene proprietà e metodi inseriti qui per non intasare le classi che poi la sfruttano per disegnare dentro se stessi tramite actionscript. Oltretutto la classe Graphics non può neanche essere creata dal costruttore, infatti recita la guida:
    Non è possibile creare un oggetto Graphics direttamente dal codice ActionScript. Se si chiama new Graphics(), viene generata un'eccezione.
    Ora, non metti in dubbio che tu sia partito da un esempio simile, ma probabilmente la classe estendeva Shape o Sprite o MovieClip (tutte classi di visualizzazione su cui è possibile disegnare tramite actionscript).

    Ti faccio un esempio di quello che intendo, riportando una mia classe di visualizzazione che disegna al proprio interno un rettangolo:
    Codice PHP:
    package {
        
    import flash.display.Sprite;
        public class 
    Rect extends Sprite {
            private var 
    A:Number;
            public function 
    Rect (w:Number=100.0h:Number=100.0c:uint=0b:Number=NaNl:uint=0o:Object=null) {
                
    != null && o['alphaFill'] != undefined o['alphaFill'] : 1.0;
                if (
    != null) for (var p:String in o) try { this[p] = o[p] } catch (err:*) {};
                
    graphics.lineStyle(bl1false"normal""none""miter"255);
                
    graphics.beginFill(cA);
                
    graphics.drawRect(00wh);
                
    graphics.endFill();
            }
        }

    Da usare così:
    Codice PHP:
    var r:Rect = new Rect(200500xFF00EE10, {x:10y:10});
    addChild(r); 

  3. #3
    Utente di HTML.it L'avatar di duri93
    Registrato dal
    Dec 2008
    Messaggi
    155
    In effetti l'esempio estendeva MovieClip...
    Penso di aver capito il metodo che hai usato tu, comunque ora provo e casomai scrivo ancora (speriamo di no!)

    GRAZIE MILLE

  4. #4
    Utente di HTML.it L'avatar di duri93
    Registrato dal
    Dec 2008
    Messaggi
    155
    Ok ho solo un problema: se alla funzione do un parametro array e il valore predefinito fa questo errore:
    1047: Parameter initializer unknown or is not a compile-time constant.
    Se nn metto il valore tutto fila liscio
    Come si può vedere ho importato la classe array, e nella funzione Alpha da errore (che ha il valore) mentre Colore no...

    Codice:
    Codice PHP:
    package{
        
    import flash.display.Sprite;
        
    import flash.display.SpreadMethod;
        
    import flash.display.GradientType;
        
    import flash.geom.Matrix;
        
    import Array;
        
        
        public class 
    Rect extends Sprite{

            function 
    Rect(posX:int,posY:int,Width:int,Height:int,Smusso:Number,Colore:Array,Alpha:Array=[1],Rotazione:Number=0){// è qui che fa errore
                //bla bla bla
                
            
    }
        }

    Confido in voi.. soprattutto in te and80 che hai una pazienza grandissima e riesci sempre a far funzionare tutto.. non so come farò a sdebitarmi..

  5. #5
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Mi pare che me lo avesse già fatto e lo avevo risolto impostando l'array a null, poi nel costruttore verificavo se il parametro era null e in quel caso lo impostavo come volevo.

  6. #6
    Utente di HTML.it L'avatar di duri93
    Registrato dal
    Dec 2008
    Messaggi
    155
    Messo a posto così, anche se è un po strano che non funzioni normalmente... sarà un bug che fisseranno prima o poi

    cmq Grazie mille, ora la mia classe funziona perfettamente!

  7. #7
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Non so, succede anche per gli Object, penso dipenda dal fatto che utilizzano le parentesi quadre e graffe per la "creazione" e probabilmente in una funzione non vengono digerite.

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.