Sintassi

La sintassi di un linguaggio definisce una serie di regole che devono essere rispettate quando si scrive codice eseguibile.

Distinzione tra maiuscole e minuscole

Nel linguaggio ActionScript 3.0 viene fatta distinzione tra maiuscole e minuscole. Gli identificatori che presentano gli stessi caratteri ma lettere minuscole e maiuscole differenti vengono considerati identificatori diversi. Ad esempio, il codice seguente crea due variabili diverse:

var num1:int; 
var Num1:int;

Sintassi del punto

L'operatore punto (.) permette di accedere alle proprietà e ai metodi di un oggetto. Utilizzando la sintassi del punto, potete fare riferimento a una proprietà o a un metodo di una classe specificando un nome di istanza seguito dall'operatore punto e dal nome della proprietà o del metodo. Ad esempio, considerate la seguente definizione di classe:

class DotExample 
{ 
    public var prop1:String; 
    public function method1():void {} 
}

Mediante la sintassi del punto, potete accedere alla proprietà prop1 e al metodo method1() utilizzando il nome di istanza creato nel codice seguente:

var myDotEx:DotExample = new DotExample(); 
myDotEx.prop1 = "hello"; 
myDotEx.method1();

Potete ricorrere alla sintassi del punto anche per la definizione dei pacchetti. L'operatore punto viene utilizzato per fare riferimento ai pacchetti nidificati. Ad esempio, la classe EventDispatcher si trova in un pacchetto denominato events che è nidificato all'interno del pacchetto flash. Per fare riferimento al pacchetto events, usate l'espressione seguente:

flash.events

Potete fare riferimento alla classe EventDispatcher anche mediante l'espressione seguente:

flash.events.EventDispatcher

Sintassi della barra

La sintassi della barra non è supportata in ActionScript 3.0 ma era utilizzata in versioni di ActionScript precedenti per indicare il percorso di un clip filmato o una variabile.

Valori letterali

Per valore letterale si intende un valore che compare direttamente nel codice. I seguenti esempi sono valori letterali:

17 
"hello" 
-3 
9.4 
null 
undefined 
true 
false

I valori letterali possono essere raggruppati a formare valori letterali composti. I valori letterali di array sono racchiusi tra parentesi quadre ([]) e utilizzano la virgola per separare gli elementi dell'array.

Un valore letterale array può essere utilizzato per inizializzare un array. Gli esempi seguenti mostrano due array inizializzati tramite valori letterali array. Potete utilizzare l'istruzione new e passare il valore letterale composto come parametro alla funzione di costruzione della classe Array, ma potete anche assegnare valori letterali direttamente durante la creazione di istanze delle seguenti classi principali ActionScript: Object, Array, String, Number, int, uint, XML, XMLList e Boolean.

// Use new statement. 
var myStrings:Array = new Array(["alpha", "beta", "gamma"]); 
var myNums:Array = new Array([1,2,3,5,8]); 
 
// Assign literal directly. 
var myStrings:Array = ["alpha", "beta", "gamma"]; 
var myNums:Array = [1,2,3,5,8];

I valori letterali possono essere anche utilizzati per inizializzare un oggetto generico, ovvero un'istanza della classe Object. I valori letterali oggetto sono racchiusi tra parentesi graffe ({}) e utilizzano la virgola per separare le proprietà dell'oggetto. Ogni proprietà viene dichiarata con il carattere di due punti (:) che separa il nome della proprietà dal relativo valore.

È possibile creare un oggetto generico utilizzando l'istruzione new e passando il valore letterale dell'oggetto come parametro alla funzione di costruzione della classe Object, oppure assegnare il valore letterale dell'oggetto direttamente all'istanza che si dichiara. L'esempio seguente mostra due metodi alternativi per creare un nuovo oggetto generico e inizializzarlo con tre proprietà (propA, propB e propC), con valori impostati rispettivamente su 1, 2 e 3:

// Use new statement and add properties. 
var myObject:Object = new Object(); 
myObject.propA = 1; 
myObject.propB = 2; 
myObject.propC = 3; 
 
// Assign literal directly. 
var myObject:Object = {propA:1, propB:2, propC:3};

Punto e virgola

Il carattere di punto e virgola (;) può essere utilizzato per terminare un'istruzione. Se omettete il carattere del punto e virgola, il compilatore presuppone che ogni riga di codice rappresenti una singola istruzione. Poiché molti programmatori sono abituati a usare il punto e virgola per indicare la fine di un'istruzione, il vostro codice può risultare più leggibile se adottate questa convezione in modo omogeneo.

L'uso di un punto e virgola per terminare un'istruzione consente di includere più di un'istruzione su una sola riga; tuttavia, un “affollamento” eccessivo di istruzioni può rendere più difficoltosa la lettura del codice.

Parentesi

In ActionScript 3.0 potete utilizzare le parentesi (()) in tre modi. Innanzi tutto, potete utilizzare le parentesi per modificare l'ordine delle operazioni in un'espressione. Le operazioni raggruppate all'interno di parentesi vengono sempre eseguite per prime. Ad esempio, nel codice seguente le parentesi sono state utilizzate per cambiare l'ordine delle operazioni:

trace(2 + 3 * 4); // 14 
trace((2 + 3) * 4); // 20

In secondo luogo, potete utilizzare le parentesi con l'operatore virgola (,) per valutare una serie di espressioni e restituire il risultato dell'espressione finale, come nell'esempio seguente:

var a:int = 2; 
var b:int = 3; 
trace((a++, b++, a+b)); // 7

Infine, potete utilizzare le parentesi per passare uno o più parametri a funzioni o metodi, come nell'esempio seguente, dove viene passato un valore String alla funzione trace():

trace("hello"); // hello

Commenti

Il codice ActionScript 3.0 supporta due tipi di commenti: a riga singola e su più righe. Questi meccanismi per l'inserimento di commenti sono simili a quelli di C++ e Java. Tutto il testo contrassegnato come commento viene ignorato dal compilatore.

I commenti a riga singola iniziano con due caratteri di barra (//) e continuano fino alla fine della riga. Ad esempio, il codice seguente contiene un commento a riga singola:

var someNumber:Number = 3; // a single line comment

I commenti su più righe invece iniziano con una barra seguita da un asterisco (/*) e finiscono con un asterisco seguito da una barra (*/).

/* This is multiline comment that can span 
more than one line of code. */

Parole chiave e riservate

Per parole riservate si intendono parole che non possono essere utilizzate come identificatori nel codice perché sono riservate per l'uso in ActionScript. Le parole riservate comprendono anche le parole chiave lessicali, che vengono rimosse dallo spazio dei nomi del programma dal compilatore. Se utilizzate una parola chiave lessicale come identificatore, il compilatore genera un errore. Nella tabella seguente sono elencate tutte le parole chiave lessicali di ActionScript 3.0.

as

break

case

catch

class

const

continue

default

delete

do

else

extends

false

finally

for

function

if

implements

import

in

instanceof

interface

internal

is

native

new

null

package

private

protected

public

return

super

switch

this

throw

to

true

try

typeof

use

var

void

while

con

     

Esiste inoltre un piccolo gruppo di parole chiave, chiamate parole chiave sintattiche, che possono essere utilizzate come identificatori ma hanno un significato speciale in determinati contesti. Nella tabella seguente sono elencate tutte le parole chiave sintattiche di ActionScript 3.0.

each

get

set

namespace

include

dynamic

final

native

override

static

   

Infine, vi sono vari identificatori che talvolta vengono definiti parole riservate future. Questi identificatori non sono riservati da ActionScript 3.0, sebbene alcuni possano essere trattati come parole chiave da software che include ActionScript 3.0. Potete utilizzare molti di questi identificatori nel codice, tuttavia Adobe ne sconsiglia l'impiego poiché potrebbero apparire come parole chiave in versioni successive del linguaggio.

abstract

boolean

byte

cast

char

debugger

double

enum

export

float

goto

intrinsic

long

prototype

short

synchronized

throws

to

transient

type

virtual

volatile

   

Costanti

ActionScript 3.0 supporta l'istruzione const, che permette di creare una costante. Le costanti sono proprietà il cui valore è fisso, ovvero non modificabile. Potete assegnare un valore a una costante una sola volta, e l'assegnazione deve avvenire in prossimità della dichiarazione della costante. Ad esempio, se una costante viene dichiarata come membro di una classe, è possibile assegnare ad essa un valore solo nella dichiarazione stessa oppure nella funzione di costruzione della classe.

Il codice seguente dichiara due costanti. Alla prima, MINIMUM, viene assegnato un valore nell'istruzione della dichiarazione, mentre il valore della seconda costante, MAXIMUM, viene assegnato nella funzione di costruzione. Notate che in questo esempio la compilazione viene eseguita in modalità standard poiché la modalità rigorosa consente di assegnare il valore di una costante solo in fase di inizializzazione.

class A 
{ 
    public const MINIMUM:int = 0; 
    public const MAXIMUM:int; 
 
    public function A() 
    { 
        MAXIMUM = 10; 
    } 
} 
 
var a:A = new A(); 
trace(a.MINIMUM); // 0 
trace(a.MAXIMUM); // 10

Se tentate di assegnare un valore iniziale a una costante in qualunque altro modo, viene generato un errore. Ad esempio, se impostate il valore iniziale di MAXIMUM all'esterno della classe, si verifica un errore runtime.

class A 
{ 
public const MINIMUM:int = 0; 
public const MAXIMUM:int; 
} 
 
var a:A = new A(); 
a["MAXIMUM"] = 10; // run-time error

ActionScript 3.0 definisce un'ampia gamma di costanti che potete utilizzare. Per convenzione, le costanti in ActionScript contengono solo lettere maiuscole, con le parole separate dal carattere di sottolineatura ( _). Ad esempio, la definizione della classe MouseEvent utilizza questa convenzione di denominazione per le proprie costanti, ciascuna delle quali rappresenta un evento relativo all'input del mouse:

package flash.events 
{ 
    public class MouseEvent extends Event 
    { 
    public static const CLICK:String = "click"; 
    public static const DOUBLE_CLICK:String = "doubleClick"; 
    public static const MOUSE_DOWN:String = "mouseDown"; 
    public static const MOUSE_MOVE:String = "mouseMove"; 
    ... 
    } 
}