Dopo aver visto le
proprietà ( variabili all' interno di una classe Actionscript 3.0 ), possiamo introdurre ora le costanti.
Le costanti sono una nuova caratteristica implementata nella versione 3.0, infatti con la 2.0 non erano presenti.
Per convenzione vengono dichiarate utilizzando un nome in maiuscolo in modo da capire a prima vista che si tratta di costanti e non di variabili ( proprietà ).
Si puà definire un valore di una costante ma non lo si può cambiare.
Se si utilizza più di una parola nel nome della costante, allora è buona norma inserire un underscore tra le parole.
Ad esempio, Event.COMPLETE, COMPLETE è una costante della classe Event.
MouseEvent.CLICK, CLICK è ua costante della classe MouseEvent.
Vediamole bene con alcuni esempi...
Creo un FLA che salvo con nome ' ottava.fla '.
Creo la Document Class da associare al FLA, Ottava.as :
Code:
package
{
import flash.display.MovieClip;
public class Ottava extends MovieClip
{
public function Ottava()
{
}
}
}
Ora dichiaro una costante:
Code:
package
{
import flash.display.MovieClip;
public class Ottava extends MovieClip
{
private const NOME:String='Filippo';
public function Ottava()
{
}
}
}
private const NOME:String='Filippo';
private sappiamo bene cosa significa
const dichiara a Flash che si tratta di una costante e non di una variabile
NOME è il nome della costante ( maiuscolo )
:String è il tipo di valore che accetta ( esattamente come le variabili )
='Filippo'; il valore della costante
Si accede al contenuto di una costante esattamente come si accede al ciìontenuto di una variabile:
Code:
package
{
import flash.display.MovieClip;
public class Ottava extends MovieClip
{
private const NOME:String='Filippo';
public function Ottava()
{
trace(NOME);
}
}
}
con trace(NOME);
ottengo il seguente output
Filippo
Non è possibile assegnare un valore ad una costante successivamente alla sua dichiarazione. Ad esempio, dichiaro un' altra costante:
Code:
package
{
import flash.display.MovieClip;
public class Ottava extends MovieClip
{
private const NOME:String='Filippo';
private const ETA:int;
public function Ottava()
{
trace(NOME);
}
}
}
se pubblico l' SWF, Flash mi restituisce questo errore:
Warning: 1110: The constant was not initialized.
Dice cha non abbiamo assegnato un valore alla costante, infatti se provassimo ad assegnarlo dalla funzione costruttrice
Code:
package
{
import flash.display.MovieClip;
public class Ottava extends MovieClip
{
private const NOME:String='Filippo';
private const ETA:int;
public function Ottava()
{
trace(NOME);
ETA=35;
}
}
}
Flash restituirebbe questo errore:
1049: Illegal assignment to a variable specified as constant.
in sostanza dice che stiamo cercando di assegnare un valore ad una costante in un modo non consetito e cioè dopo la dichiarazione della costante.
Quindi, quando dichiaro una costante devo per forza assegnarle anche un valore che rimarrà il medesimo per tutta l' applicazione.
Per quanto riguarda gli attributi di una costante, sono gli stessi che vengono applicati alle variabili:
private, internal, protected, public e static
consiglio di dare uno sguardo alla
lezione 4 per chi avesse dei dubbi sugli attributi delle proprietà.
Allego i files: