I messaggi di avvertenza del compilatore identificano il codice che, pur essendo valido e privo di problemi di compilazione,
potrebbe produrre risultati diversi da quelli desiderati dall'autore. Per abilitare il rilevamento di possibili problemi di questo tipo, compilare i progetti ActionScript in modalità avvertenze.
Alcune di queste avvertenze (ad esempio, "Dichiarazione di tipo mancante") riguardano opzioni di stile di codifica che il programmatore ha la facoltà di applicare o meno.
Altre (ad esempio, "Assegnazione null impossibile") si riferiscono a istruzioni che sono valide ma potrebbero determinare un comportamento diverso da quello previsto
dall'utente. Una terza categoria di avvertenze riguarda i problemi che si possono incontrare durante la migrazione del codice da ActionScript 2.0 ad ActionScript 3.0.
| | Codice | Messaggio | Descrizione |
| | 1009 | _ '_' non contiene una dichiarazione di tipo.
|
Non è obbligatorio dichiarare un tipo di dati nel codice. Un tipo restituito di una funzione, un parametro o una variabile non prevede una dichiarazione di tipo.
Tuttavia, l'uso delle dichiarazioni di tipo consente al compilatore di scrivere codice più efficiente e di rilevare più errori in fase di compilazione.
Attivare questa avvertenza se si vuole essere avvisati quando si omette di specificare una dichiarazione di tipo.
|
| | 1013 | Le variabili del tipo _ non possono essere undefined. Il valore undefined verrà assegnato forzatamente al tipo _ prima del confronto.
|
Le variabili del tipo * non possono essere undefined. Con alcune eccezioni, le variabili non inizializzate hanno il valore predefinito null anziché undefined.
Le eccezioni sono: le variabili Boolean, che hanno il valore predefinito false; le variabili Number, che hanno il valore predefinito NaN, e le variabili int o uint, il cui valore predefinito è 0.
|
| | 1031 | Problema relativo alla migrazione: il risultato di new _ sarà il valore restituito di _, anziché una nuova istanza della funzione.
|
Questa è un'avvertenza relativa alla migrazione del codice. Il codice rilevato si comporta in modo diverso in ActionScript 3.0 rispetto ad ActionScript 2.0, come mostra l'esempio seguente:
function f(){
this.b = 22;
this.a = new Array(2);
this.a[0] = 33;
this.a[1] = 44;
return a;
}
// restituisce una nuova istanza di f in ActionScript 2.0 e un nuovo elemento array 2 in ActionScript 3.0
var d = new f(); // avvertenza qui
trace(d.a); // undefined in ActionScript 3.0, [33,44] in ActionScript 2.0.
|
| | 1035 | Uso di Boolean() senza argomenti.
|
Questa è un'avvertenza relativa alla migrazione del codice. La funzione Boolean() restituisce false in ActionScript 3.0 e undefined in ActionScript 2.0.
|
| | 1039 | Problema relativo alla migrazione: quando la funzione Number('') viene chiamata con un argomento String vuoto, restituisce 0 in ActionScript 3.0 e NaN in ActionScript 2.0.
|
Questa è un'avvertenza relativa alla migrazione del codice. Il metodo Number() chiamato con un argomento String ignora tutto lo spazio vuoto nella stringa e restituisce il valore predefinito 0 se non viene rilevata alcuna cifra.
In ActionScript 2.0, l'eventuale spazio vuoto nella stringa determina il risultato NaN.
|
| | 1045 | Problema relativo alla migrazione: il modo in cui Array.toString() gestisce gli elementi null e undefined è cambiato.
|
Questa è un'avvertenza relativa alla migrazione del codice. In ActionScript 2.0, gli elementi di array null vengono convertiti in null e gli elementi undefined in undefined.
In ActionScript 3.0, gli elementi null e undefined vengono entrambi convertiti nella stringa ''. Se il codice utilizzato analizza l'output toString() di un Array, potrebbe essere necessario modificarlo per tenere conto di questa differenza.
|
| | 1059 | Problema relativo alla migrazione: La proprietà _ non è più supportata. _.
|
Questa è un'avvertenza relativa alla migrazione del codice. La proprietà che si sta tentando di utilizzare non esiste in ActionScript 3.0.
|
| | 1061 | Problema relativo alla migrazione: Il metodo _ non è più supportato. _.
|
Questa è un'avvertenza relativa alla migrazione del codice. il metodo che si sta tentando di utilizzare non esiste in ActionScript 3.0.
|
| | 1066 | __resolve non è più supportato. | |
| | 1067 | Problema relativo alla migrazione: __resolve non è più supportato. Utilizzare la nuova classe Proxy per ottenere una funzionalità simile.
|
Questa è un'avvertenza relativa alla migrazione del codice. Vedere la voce Proxy in questa guida per ulteriori informazioni sulla sostituzione di __resolve.
|
| | 1071 | Problema relativo alla migrazione: _level non è più supportato. Per ulteriori informazioni, vedere il pacchetto flash.display.
|
Questa è un'avvertenza relativa alla migrazione del codice. La proprietà che si sta tentando di utilizzare non esiste in ActionScript 3.0.
|
| | 1073 | Problema relativo alla migrazione: _ non è una classe dinamica. Non è possibile aggiungervi dinamicamente delle istanze.
|
Questa è un'avvertenza relativa alla migrazione del codice. In ActionScript 2.0, molte classi (ad esempio Number) sono dinamiche, ovvero è possibile aggiungere nuove proprietà alle istanze di tali classi in fase di runtime. Questa avvertenza viene generata quando il codice tenta di aggiungere una proprietà a un'istanza di una classe non dinamica.
|
| | 1083 | Problema relativo alla migrazione: il metodo _ ha un comportamento differente in ActionScript 3.0 perché è stata modificata l'assegnazione dell'area di validità per la parola chiave this. Per ulteriori informazioni, vedere la voce relativa all'avvertenza 1083.
|
Questa è un'avvertenza relativa alla migrazione del codice. Questa avvertenza viene generata quando un metodo di un oggetto viene utilizzato come valore, solitamente come funzione di callback.
In ActionScript 2.0, le funzioni vengono eseguite nel contesto in cui vengono chiamate, mentre in ActionScript 3.0 vengono sempre eseguite nel contesto in cui sono state definite. Di conseguenza, i nomi delle variabili e dei metodi vengono risolti nella classe di cui fa parte il callback, anziché rispetto al contesto da cui viene chiamato, come nell'esempio seguente:
class a
{
var x;
function a() { x = 1; }
function b() { trace(x); }
}
var A:a = new a();
var f:Function = a.b; // avvertenza generata qui
var x = 22;
f(); // produce 1 in ActionScript 3.0, 22 in ActionScript 2.0
|
| | 1085 | L'area di validità di _ verrà impostata sullo spazio dei nomi predefinito: _ internal. Non sarà visibile al di fuori di questo pacchetto.
|
Non è obbligatorio dichiarare uno spazio dei nomi nel codice. Attivare questa avvertenza se si vuole essere avvisati quando si omette di dichiarare un namespace o uno specificatore di accesso per una definizione.
In mancanza di tale dato, la definizione non è visibile al codice che si trova al di fuori di questo file. Per renderla visibile a tale codice, dichiararla con lo specificatore di accesso public o con una dichiarazione namespace. Per rendere valida la definizione solo nell'ambito locale del file e non ricevere questa avvertenza, dichiararla come private.
|
| | 1087 | Problema relativo alla migrazione: ActionScript 3.0 esegue un'iterazione delle proprietà di un oggetto all'interno di un'istruzione "for x in target" in ordine casuale.
|
Questa è un'avvertenza relativa alla migrazione del codice. In ActionScript 2.0, l'ordine in cui vengono elaborate le proprietà di un oggetto è sempre lo stesso.
In ActionScript 3.0, l'ordine è casuale è può cambiare da sistema a sistema. Se si verifica un ordinamento insolito, controllare questo ciclo per determinare se tale comportamento può influire sul codice.
|
| | 1089 | Codice errore: _.
|
Il file di origine è danneggiato oppure è presente un bug nel codice del compilatore. Contattare Adobe, Inc. per registrare un bug.
|
| | 1091 | Problema relativo alla migrazione: _
|
Questa è un'avvertenza relativa alla migrazione del codice. In ActionScript 2.0, la dichiarazione di un metodo con un nome speciale (ad esempio onMouseDown) fa sì che Flash chiami quel metodo quando si verifica un determinato evento. In ActionScript 3.0, è necessario chiamare addEventListener() con un metodo per registrarlo in modo da ricevere quell'evento. Vedere addEventListener in questa guida per ulteriori informazioni.
|
| | 1093 | È stato utilizzato un valore negativo in una posizione in cui era previsto un valore uint (non negativo).
|
L'assegnazione di un valore negativo a un tipo di dati uint genera un valore positivo di grandi dimensioni. var x:uint = -1; trace(x); // 4294967295.
|
| | 1097 | Confronto non logico con null. Le variabili del tipo _ non possono essere null.
|
Le istanze di Boolean, int, uint e Number non possono essere null. Il tipo di operatore di confronto converte null in false prima di confrontarlo con un tipo di dati Boolean, oppure in 0 prima del confronto con un tipo di dati Number, int o uint.
|
| | 1099 | Confronto non logico con NaN. Questa istruzione restituisce sempre false.
|
NaN ha la proprietà matematica esclusiva di restituire sempre false per qualunque confronto di cui sia oggetto. Utilizzare invece la funzione globale isNaN() per rilevare un valore NaN, come nell'esempio seguente:
trace(NaN == NaN); // false
trace(NaN != NaN); // ancora false
trace(isNaN(NaN)); // true
|
| | 1101 | Assegnazione all'interno di un'istruzione condizionale. Si voleva specificare == invece di =?
|
Il risultato di un'assegnazione condizionale = è il valore della parte destra dell'istruzione =.
È possibile utilizzare un'istruzione di assegnazione come test condizionale, ma è sconsigliato.
Solitamente si tratta di un errore di digitazione e l'istruzione che si intende effettivamente scrivere è un test di uguaglianza ==, come nell'esempio seguente:
var x:Boolean = false;
var y:Boolean = true;
// è difficile determinare se la riga seguente imposta intenzionalmente il valore di x su y o se si tratta di un errore di digitazione
if (x = y) { trace("x is assigned y's value of true, making the conditional test evaluate as true."); }
|
| | 1103 | È stato utilizzato null ma era previsto un valore _.
|
Alle variabili Boolean, Number, int e uint non è possibile assegnare null come valore. Il valore null viene inserito implicitamente in false quando viene assegnato a una variabile Boolean, e in 0 quando è assegnato a int, uint o Number.
|
| | 1105 | Non è stata specificata una funzione di costruzione per la classe _.
|
Non è obbligatorio specificare una funzione di costruzione. Attivare questa avvertenza se si desidera dichiarare sempre le funzioni di costruzione per le classi.
L'avvertenza ha lo scopo di facilitare l'individuazione dei casi in cui il nome di una classe è cambiato ma il nome della funzione di costruzione corrispondente è rimasto uguale.
Le condizioni di questo tipo non vengono segnalate come problema se questa avvertenza non è attivata; di conseguenza, la funzione di costruzione con il vecchio nome viene considerata come una funzione normale.
|
| | 1111 | La costante non è stata inizializzata. | |
| | 1113 | Array(x) si comporta allo stesso modo del nuovo Array(x). Per inserire un valore nel tipo Array, utilizzare l'espressione x as Array invece di Array(x). | |
| | 1115 | L'istruzione super() verrà eseguita prima di accedere a questa funzione di costruzione. Se si desidera controllare in modo esplicito l'esecuzione di super(), aggiungere una chiamata a tale istruzione all'interno della funzione di costruzione.
|
Non è obbligatorio aggiungere una chiamata a super() in una funzione di costruzione. Attivare questa avvertenza se si desidera specificare sempre in modo esplicito quando viene chiamata un'istruzione super().
In questo modo è più facile individuare i casi in cui si dimentica di chiamare super() dopo un codice di inizializzazione locale.
|
| | 3552 | L'aggiunta di testo a un'istanza TextField mediante += è spesso un'operazione più lenta rispetto all'uso del metodo TextField.appendText().
|
Per informazioni sui miglioramenti apportati alla gestione del testo, vedere in questa guida il metodo appendText() della classe TextField.
|
| | 3554 | È stato utilizzato un valore Function ma era previsto un valore del tipo _. È possibile che manchino le parentesi () dopo il riferimento alla funzione.
|
In ActionScript è possibile utilizzare le stesse funzioni come valori. Il codice in questione utilizza un valore del tipo Function in una posizione in cui è previsto un tipo diverso da Function, Object o *. Solitamente si tratta di un errore di digitazione, ovvero si è dimenticato di aggiungere le parentesi () dopo il nome della funzione.
|
| | 3556 | L'operatore instanceof è sconsigliato; utilizzare invece l'operatore is. | |
| | 3574 | Problema relativo alla migrazione: la classe XML di ActionScript 2.0 è stata rinominata in XMLDocument.
|
Questa è un'avvertenza relativa alla migrazione del codice. XML è una classe diversa in ActionScript 3.0 rispetto ad ActionScript 2.0. In ActionScript 3.0, la classe XMLDocument è equivalente alla classe XML di ActionScript 2.0.
La classe XML di ActionScript 3.0 offre una funzionalità migliorata con un'API più semplice e più avanzata. Per ulteriori informazioni, vedere la classe XML nella Guida di riferimento di ActionScript.
|
| | 3576 | Date(x) si comporta allo stesso modo del nuovo Date().toString(). Per inserire un valore nel tipo Date, utilizzare l'espressione "x as Date" invece di Date(x). | |
| | 3582 | L'importazione di un pacchetto con lo stesso nome della classe corrente nasconde il relativo identificatore in questa area di validità. | |
| | 3584 | Sono stati specificati più argomenti con il nome '_'. I riferimenti a tale argomento verranno sempre risolti all'ultima occorrenza. | |
| | 3590 | È stato utilizzato un valore non booleano ma era previsto un valore booleano. | |
| | 3591 | È stato utilizzato _ ma era previsto un valore booleano. L'espressione verrà assegnata forzatamente al tipo Boolean. | |
| | 3593 | _ non è una proprietà riconosciuta della classe dinamica _.
|
La modalità di compilazione rigorosa non verifica le proprietà non definite nelle istanze di classi dinamiche. I tipi Date, RegExp e Error sono dinamici per garantire la compatibilità retroattiva con ECMAScript. Questa avvertenza segnala l'uso di proprietà non definite nelle istanze di tali classi.
Un problema comune si verifica quando si tenta di ottenere (get) o impostare (set) una proprietà year inesistente su un valore Date. Il nome corretto della proprietà è fullYear.
|
| | 3595 | _ non è un metodo riconosciuto della classe dinamica _.
|
La modalità di compilazione rigorosa non verifica i metodi non definiti nelle istanze di classi dinamiche. I tipi Date, RegExp e Error sono dinamici per garantire la compatibilità retroattiva con ECMAScript. Questa avvertenza segnala l'uso di metodi non definiti nelle istanze di tali classi.
|
| | 3597 | Definizione di variabile duplicata.
|
Il compilatore ha rilevato una definizione duplicata di una variabile. Si potrebbero verificare dei risultati imprevisti. ActionScript non supporta l'assegnazione dell'area di validità delle variabili a livello di blocco. Tutte le variabili definite nel corpo di una funzione esistono all'interno della stessa area di validità, anche se sono definite in un'istruzione if, while, for e così via. Il seguente codice, ad esempio, dichiara la variabile x due volte:
function test() {
var x:Number = 10;
if (true) {
for (var x=0; x < 5; x++) // un'avvertenza qui; questa è la seconda definizione di x
trace(x);
}
trace(x); // 5, non 10. L'ultimo valore impostato dal ciclo for precedente è il valore corrente di x
}
|
| | 3598 | Il nome della definizione corrisponde al nome di un pacchetto importato. I riferimenti non qualificati a quel nome verranno risolti al pacchetto e non alla definizione. | |
| | 3599 | Il nome della definizione corrisponde al nome di un pacchetto importato. I riferimenti non qualificati a quel nome verranno risolti al pacchetto e non alla definizione.
|
Se una definizione ha lo stesso nome di un pacchetto presente nell'area di validità, tutti i riferimenti non qualificati a quel nome verranno risolti al pacchetto anziché alla definizione Di conseguenza, si possono verificare errori imprevisti nei riferimenti alla variabile. Gli eventuali riferimenti alla definizione devono essere qualificati per essere risolti alla definizione invece che al pacchetto.
|
| | 3600 | Possibile tentativo di eliminare una proprietà fissa. | |
| | 3601 | La proprietà dichiarata _ non può essere eliminata. Per liberare la memoria ad essa associata, impostarne il valore su null.
| L'eliminazione rimuove da un oggetto le proprietà definite dinamicamente. Le proprietà dichiarate di una classe non possono essere eliminate; l'operazione fallisce senza fornire indicazioni. Per liberare la memoria associata a questa variabile, impostarne invece il valore su null. |